1 #include <lunaix/syscall.h>
2 #include <lunaix/signal_defs.h>
3 #include <lunaix/types.h>
6 sigpending(sigset_t *set)
8 return do_lunaix_syscall(__SYSCALL_sigpending, set);
12 sigsuspend(const sigset_t *mask)
14 return do_lunaix_syscall(__SYSCALL_sigsuspend, mask);
18 sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
20 return do_lunaix_syscall(__SYSCALL_sigprocmask, how, set, oldset);
24 sys_sigaction(int signum, struct sigaction* action)
26 return do_lunaix_syscall(__SYSCALL_sys_sigaction, signum, action);
30 kill(pid_t pid, int signum)
32 return do_lunaix_syscall(__SYSCALL_kill, pid, signum);
42 signal(int signum, sighandler_t handler)
44 struct sigaction sa = { .sa_handler = (void*)handler,
45 .sa_mask = (sigset_t)-1,
46 .sa_sigaction = (void*)sigtrampoline };
48 sys_sigaction(signum, &sa);
56 return kill(getpid(), signum);
60 sigaction(int signum, struct sigaction* action)
62 return sys_sigaction(signum, action);
68 void (*sa_handler)(int);
69 unsigned char saved_frame[0];
73 sig_dohandling(int signum, void* siginfo, void* sigctx)
75 struct siguctx* uctx = (struct siguctx*)sigctx;
76 uctx->sa_handler(signum);