summaryrefslogtreecommitdiffstats
path: root/usr/klibc/__signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/klibc/__signal.c')
-rw-r--r--usr/klibc/__signal.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/usr/klibc/__signal.c b/usr/klibc/__signal.c
new file mode 100644
index 0000000..d174b8e
--- /dev/null
+++ b/usr/klibc/__signal.c
@@ -0,0 +1,20 @@
+/*
+ * __signal.c
+ */
+
+#include <signal.h>
+
+__sighandler_t __signal(int signum, __sighandler_t handler, int flags)
+{
+ struct sigaction sa;
+
+ sa.sa_handler = handler;
+ sa.sa_flags = flags;
+ sigemptyset(&sa.sa_mask);
+
+ if (sigaction(signum, &sa, &sa)) {
+ return (__sighandler_t) SIG_ERR;
+ } else {
+ return (__sighandler_t) sa.sa_handler;
+ }
+}