summaryrefslogtreecommitdiffstats
path: root/lib/libc_r/TEST
diff options
context:
space:
mode:
authord <d@openbsd.org>2000-01-04 00:17:46 +0000
committerd <d@openbsd.org>2000-01-04 00:17:46 +0000
commit5e4c0e038ce525fb14ad77041d81ee9ab5457ab2 (patch)
treef597d14a65a91d9d6f5df90675121b9812f52d3d /lib/libc_r/TEST
parentipv6 support: mostly gethostbyname->getaddrinfo/getnameinfo, new features: (diff)
downloadwireguard-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.c48
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));
+}