diff options
author | David Leonard <d@cvs.openbsd.org> | 2000-01-04 00:17:47 +0000 |
---|---|---|
committer | David Leonard <d@cvs.openbsd.org> | 2000-01-04 00:17:47 +0000 |
commit | 0d49cb5f8d661e8ddc78ec9624deaf2ab5437d1e (patch) | |
tree | 010f51e702a59081d1ba64c5d17e3ca33bcfdc86 | |
parent | 40ac6ccc6249d504cde2c88df9f90dfcc81f003f (diff) |
Test some signal handling
-rw-r--r-- | lib/libc_r/TEST/test_signal.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/libc_r/TEST/test_signal.c b/lib/libc_r/TEST/test_signal.c new file mode 100644 index 00000000000..2661d4aff89 --- /dev/null +++ b/lib/libc_r/TEST/test_signal.c @@ -0,0 +1,48 @@ +/* $OpenBSD: test_signal.c,v 1.1 2000/01/04 00:17:46 d Exp $ */ + +/* + * This program tests signal handler re-entrancy. + */ + +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <signal.h> +#include "test.h" + +void * +sleeper(arg) + void *arg; +{ + sigset_t mask; + + /* Ignore all signals in this thread */ + sigfillset(&mask); + CHECKe(sigprocmask(SIG_SETMASK, &mask, NULL)); + + ASSERT(sleep(10) == 0); + SUCCEED; +} + +void +handler(sig) + int sig; +{ + printf("signal handler %d\n", sig); + alarm(1); + signal(SIGALRM, handler); +} + +int +main() +{ + pthread_t slpr; + + ASSERT(signal(SIGALRM, handler) != SIG_ERR); + CHECKe(alarm(1)); + /* CHECKr(pthread_create(&slpr, NULL, sleeper, NULL)); */ + /* ASSERT(sleep(1) == 0); */ + for (;;) + CHECKe(write(STDOUT_FILENO, ".", 1)); +} |