diff options
author | 2000-01-04 00:17:46 +0000 | |
---|---|---|
committer | 2000-01-04 00:17:46 +0000 | |
commit | 5e4c0e038ce525fb14ad77041d81ee9ab5457ab2 (patch) | |
tree | f597d14a65a91d9d6f5df90675121b9812f52d3d /lib/libc_r/TEST | |
parent | ipv6 support: mostly gethostbyname->getaddrinfo/getnameinfo, new features: (diff) | |
download | wireguard-openbsd-5e4c0e038ce525fb14ad77041d81ee9ab5457ab2.tar.xz wireguard-openbsd-5e4c0e038ce525fb14ad77041d81ee9ab5457ab2.zip |
Test some signal handling
Diffstat (limited to 'lib/libc_r/TEST')
-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)); +} |