feat: kill(2) implementation
[lunaix-os.git] / lunaix-os / includes / lunaix / signal.h
index c98441a230aff851849791fcab184673eb259c94..5405aabf9c6a6878e2280cd4e2473fb147bd3289 100644 (file)
@@ -1,20 +1,28 @@
 #ifndef __LUNAIX_SIGNAL_H
 #define __LUNAIX_SIGNAL_H
 
-#define _SIG_NUM 8
+#include <lunaix/syscall.h>
+
+#define _SIG_NUM 16
 
 #define _SIG_PENDING(bitmap, sig) ((bitmap) & (1 << (sig)))
 
-#define _SIGSEGV 0
-#define _SIGALRM 1
-#define _SIGCHLD 2
-#define _SIGCLD SIGCHLD
-#define _SIGINT 3
-#define _SIGKILL 4
-#define _SIGSTOP 5
-#define _SIGCONT 6
+#define _SIGSEGV 1
+#define _SIGALRM 2
+#define _SIGCHLD 3
+#define _SIGCLD _SIGCHLD
+#define _SIGINT 4
+#define _SIGKILL 5
+#define _SIGSTOP 6
+#define _SIGCONT 7
+#define _SIGTERM 8
+
+#define __SIGNAL(num) (1 << (num))
+#define __SIGSET(bitmap, num) (bitmap = bitmap | __SIGNAL(num))
+#define __SIGTEST(bitmap, num) (bitmap & __SIGNAL(num))
+#define __SIGCLEAR(bitmap, num) ((bitmap) = (bitmap) & ~__SIGNAL(num))
 
-#define _SIGNAL_UNMASKABLE ((1 << _SIGKILL) | (1 << _SIGSTOP))
+#define _SIGNAL_UNMASKABLE (__SIGNAL(_SIGKILL) | __SIGNAL(_SIGSTOP))
 
 #define _SIG_BLOCK 1
 #define _SIG_UNBLOCK 2
 typedef unsigned int sigset_t;
 typedef void (*sighandler_t)(int);
 
-void
-signal_dispatch();
+__LXSYSCALL2(int, signal, int, signum, sighandler_t, handler);
+
+__LXSYSCALL3(int,
+             sigprocmask,
+             int,
+             how,
+             const sigset_t,
+             *set,
+             sigset_t,
+             *oldset);
 
 #endif /* __LUNAIX_SIGNAL_H */