Update of /cvsroot/ltp/ltp/testcases/open_posix_testsuite/conformance/interfaces/sigrelse In directory sc8-pr-cvs1:/tmp/cvs-serv21378/conformance/interfaces/sigrelse Added Files: 1-1.c 2-1.c 3-1.sh 3-2.sh 3-3.sh 3-4.sh 3-core-buildonly.c assertions.xml coverage.txt Log Message: Added the 1.1.0 version of the Open POSIX Test Suite. --- NEW FILE: 1-1.c --- /* * Copyright (c) 2003, Intel Corporation. All rights reserved. * Created by: salwan.searty REMOVE-THIS AT intel DOT com * This file is licensed under the GPL license. For the full content * of this license, see the COPYING file at the top level of this * source tree. Steps: 1. Set up a handler for signal SIGABRT, such that it is called if signal is ever raised. 2. Call sighold on that SIGABRT. 3. Raise a SIGABRT and verify that the signal handler was not called. Otherwise, the test exits with unresolved results. 4. Call sigrelse on SIGABRT. 5. Verify that the handler gets called this time. */ #define _XOPEN_SOURCE 600 #include <signal.h> #include <stdio.h> #include <unistd.h> #include "posixtest.h" int handler_called = 0; void handler(int signo) { handler_called = 1; } int main() { struct sigaction act; act.sa_handler = handler; act.sa_flags = 0; sigemptyset(&act.sa_mask); if (sigaction(SIGABRT, &act, 0) == -1) { perror("Unexpected error while attempting to setup test " "pre-conditions"); return PTS_UNRESOLVED; } sighold(SIGABRT); if (raise(SIGABRT) == -1) { perror("Unexpected error while attempting to setup test " "pre-conditions"); return PTS_UNRESOLVED; } if (handler_called) { printf("UNRESOLVED. possible problem in sigrelse\n"); return PTS_UNRESOLVED; } if (sigrelse(SIGABRT) == -1) { printf("UNRESOLVED. possible problem in sigrelse\n"); return PTS_UNRESOLVED; } sleep(1); if (handler_called) { printf("PASS: SIGABRT successfully removed from signal mask\n"); return PTS_PASS; } printf("FAIL\n"); return PTS_FAIL; } --- NEW FILE: 2-1.c --- /* * Copyright (c) 2003, Intel Corporation. All rights reserved. * Created by: salwan.searty REMOVE-THIS AT intel DOT com * This file is licensed under the GPL license. For the full content * of this license, see the COPYING file at the top level of this * source tree. Simply, if sigrelse returns a 0 here, test passes. */ #define _XOPEN_SOURCE 600 #include <stdio.h> #include <signal.h> #include "posixtest.h" int main() { if ((int)sigrelse(SIGABRT) != 0) { perror("sigrelse failed -- returned -- test aborted"); return PTS_UNRESOLVED; } printf("sigrelse passed\n"); return PTS_PASS; } --- NEW FILE: 3-1.sh --- #!/bin/sh # Copyright (c) 2003, Intel Corporation. All rights reserved. # Created by: salwan.searty REMOVE-THIS AT intel DOT com # This file is licensed under the GPL license. For the full content # of this license, see the COPYING file at the top level of this # source tree. # # Test various methods of adding invalid signals to sigrelse(). # conformance/interfaces/sigrelse/3-core-buildonly.test 1 --- NEW FILE: 3-2.sh --- #!/bin/sh # Copyright (c) 2003, Intel Corporation. All rights reserved. # Created by: salwan.searty REMOVE-THIS AT intel DOT com # This file is licensed under the GPL license. For the full content # of this license, see the COPYING file at the top level of this # source tree. # # Test various methods of adding invalid signals to sigrelse(). # conformance/interfaces/sigrelse/3-core-buildonly.test 2 --- NEW FILE: 3-3.sh --- #!/bin/sh # Copyright (c) 2003, Intel Corporation. All rights reserved. # Created by: salwan.searty REMOVE-THIS AT intel DOT com # This file is licensed under the GPL license. For the full content # of this license, see the COPYING file at the top level of this # source tree. # # Test various methods of adding invalid signals to sigrelse(). # conformance/interfaces/sigrelse/3-core-buildonly.test 3 --- NEW FILE: 3-4.sh --- #!/bin/sh # Copyright (c) 2003, Intel Corporation. All rights reserved. # Created by: salwan.searty REMOVE-THIS AT intel DOT com # This file is licensed under the GPL license. For the full content # of this license, see the COPYING file at the top level of this # source tree. # # Test various methods of adding invalid signals to sigrelse(). # conformance/interfaces/sigrelse/3-core-buildonly.test 4 --- NEW FILE: 3-core-buildonly.c --- /* * Copyright (c) 2003, Intel Corporation. All rights reserved. * Created by: salwan.searty REMOVE-THIS AT intel DOT com * This file is licensed under the GPL license. For the full content * of this license, see the COPYING file at the top level of this * source tree. Testing passing an invalid signals to sigrelse(). After sighold is called on an invalid signal, sigrelse() should return -1 and set errno to EINVAL The invalid signal passed to sigrelse() depends on the argument passed to this program. There are currently 4 invalid signals. */ #define _XOPEN_SOURCE 600 #include <stdio.h> #include <signal.h> #include <errno.h> #include <stdint.h> #include <setjmp.h> #include "posixtest.h" jmp_buf sig11_recover; void sig11_handler(int sig); int main(int argc, char *argv[]) { int signo, TEST_RETURN; struct sigaction sa, osa; if (argc < 2) { printf("Usage: %s [1|2|3|4]\n", argv[0]); return PTS_UNRESOLVED; } /* Various error conditions */ switch (argv[1][0]) { case '1': signo=-1; break; case '2': signo=-10000; break; case '3': signo=INT32_MIN+1; break; case '4': signo=INT32_MIN; break; default: printf("Usage: %s [1|2|3|4]\n", argv[0]); return PTS_UNRESOLVED; } /* special sig11 case */ sa.sa_handler = &sig11_handler; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGSEGV, NULL, &osa); sigaction(SIGSEGV, &sa, NULL); if (setjmp(sig11_recover)) { errno = EINVAL; TEST_RETURN=-2; } else { TEST_RETURN=sigrelse(signo); } sigaction(SIGSEGV, &osa, NULL); if (TEST_RETURN == -1) { if (EINVAL == errno) { printf ("errno set to EINVAL\n"); return PTS_PASS; } else { printf ("errno not set to EINVAL\n"); return PTS_FAIL; } } if (TEST_RETURN == -2) { printf ("test received SIGSEGV\n"); return PTS_UNRESOLVED; } printf("sigrelse did not return -1\n"); return PTS_FAIL; } /****************************************************************** * sig11_handler() - our segfault recover hack ******************************************************************/ void sig11_handler(int sig) { longjmp(sig11_recover, 1); } --- NEW FILE: assertions.xml --- <assertions> <assertion id="1" tag="ref:XSH6:41954:41954 pt:XSI"> The sigrelse () function removes a signal sig from the signal mask of the calling process. </assertion> <assertion id="2" tag="ref:XSH6:41970:41971 pt:XSI"> sigrelse will return 0 upon successful completion. </assertion> <assertion id="3" tag="ref:XSH6:41973:41974 pt:XSI"> If the function is passed an illegal signal number, then errno will be set to [EINVAL], and sigrelse() will return -1. </assertion> </assertions> --- NEW FILE: coverage.txt --- This document defines the coverage for function sigrelse(). Assertion Covered? 1 YES 2 YES 3 YES |