diff options
Diffstat (limited to 'winsup/testsuite/winsup.api/checksignal.c')
-rw-r--r-- | winsup/testsuite/winsup.api/checksignal.c | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/winsup/testsuite/winsup.api/checksignal.c b/winsup/testsuite/winsup.api/checksignal.c deleted file mode 100644 index a8b5d3927..000000000 --- a/winsup/testsuite/winsup.api/checksignal.c +++ /dev/null @@ -1,79 +0,0 @@ -#include <stdio.h> -#include <errno.h> -#include <stdlib.h> -#include <unistd.h> -#include <signal.h> - -#include "test.h" -#include "usctest.h" - -char *TCID = "checksignal"; /* Test program identifier. */ -int TST_TOTAL = 3; /* Total number of test cases. */ -extern int Tst_count; /* Test Case counter for tst_* routines */ - -void -sig_handler (int signo) -{ - errno = EINVAL; -} - -int -main () -{ - int n, ret; - int fds[2]; - char buf[10]; - struct sigaction act; - - Tst_count = 0; - - if (pipe (fds) < 0) - tst_brk (TBROK, NULL, NULL, "Create pipe"); - - /* Reset SA_RESTART flag. */ - while ((ret = sigaction (SIGALRM, NULL, &act)) == EINTR) - ; - if (ret) - tst_brk (TBROK, NULL, NULL, "Get signal action structure"); - act.sa_flags &= ~SA_RESTART; - while ((ret = sigaction (SIGALRM, &act, NULL)) == EINTR) - ; - if (ret) - tst_brk (TBROK, NULL, NULL, "Reset SA_RESTART"); - - /* Set signal handler using signal(2) call... */ - if (signal (SIGALRM, sig_handler) < 0) - tst_brk (TBROK, NULL, NULL, "Call signal() to install signal handler"); - /* ...and check if signal(2) sets SA_RESTART again. */ - while ((ret = sigaction (SIGALRM, NULL, &act)) == EINTR) - ; - if (ret) - tst_brk (TBROK, NULL, NULL, "Get signal action structure"); - tst_resm (act.sa_flags & SA_RESTART ? TPASS : TFAIL, - "signal() sets SA_RESTART"); - - /* Reset SA_RESTART flag again. */ - act.sa_handler = sig_handler; - act.sa_flags &= ~SA_RESTART; - while ((ret = sigaction (SIGALRM, &act, NULL)) == EINTR) - ; - if (ret) - tst_brk (TBROK, NULL, NULL, "Reset SA_RESTART"); - - /* Start timer to force a SIGALRM. */ - alarm (1); - - /* Call read(2) to check if the EINTR errno is correctly preserved, - even if the signal handler routine changes errno. */ - n = read(fds[0], buf, 10); - tst_resm (n < 0 && errno == EINTR ? TPASS : TFAIL, - "Set EINTR on interrupted read() call"); - - /* Check if another errno is correctly returned (here EBADF). */ - close (fds[0]); - n = read(fds[0], buf, 10); - tst_resm (n < 0 && errno == EBADF ? TPASS : TFAIL, - "Set EBADF on closed file descriptor"); - - tst_exit (); -} |