require "./sys/types" require "./time" lib LibC SIGHUP = 1 SIGINT = 2 SIGQUIT = 3 SIGILL = 4 SIGTRAP = 5 SIGABRT = 6 SIGIOT = 6 SIGBUS = 7 SIGFPE = 8 SIGKILL = 9 SIGUSR1 = 10 SIGSEGV = 11 SIGUSR2 = 12 SIGPIPE = 13 SIGALRM = 14 SIGTERM = 15 SIGSTKFLT = 16 SIGCHLD = 17 SIGCONT = 18 SIGSTOP = 19 SIGTSTP = 20 SIGTTIN = 21 SIGTTOU = 22 SIGURG = 23 SIGXCPU = 24 SIGXFSZ = 25 SIGVTALRM = 26 SIGPROF = 27 SIGWINCH = 28 SIGIO = 29 SIGPOLL = LibC::SIGIO SIGPWR = 30 SIGSYS = 31 SIGUNUSED = 31 SIGSTKSZ = 16384 SIG_SETMASK = 2 alias SighandlerT = Int -> SIG_DFL = SighandlerT.new(Pointer(Void).new(0_u64), Pointer(Void).null) SIG_IGN = SighandlerT.new(Pointer(Void).new(1_u64), Pointer(Void).null) struct SigsetT val : ULong[1] # (_KERNEL__NSIG / _NSIG_BPW) end SA_ONSTACK = 0x08000000 SA_RESTART = 0x10000000 SA_SIGINFO = 0x00000004 struct SiginfoT si_signo : Int si_errno : Int si_code : Int __pad0 : Int si_addr : Void* # Assuming the segfault form of siginfo_t __pad1 : Int[26] # SI_MAX_SIZE (128) / sizeof(int) - ... end alias SigactionHandlerT = (Int, SiginfoT*, Void*) -> struct Sigaction sa_flags : Int sa_sigaction : SigactionHandlerT sa_mask : SigsetT sa_restorer : -> end struct StackT ss_sp : Void* ss_flags : Int ss_size : ULong end fun kill(__pid : PidT, __signal : Int) : Int fun pthread_sigmask(__how : Int, __new_set : SigsetT*, __old_set : SigsetT*) : Int fun pthread_kill(__thread : PthreadT, __sig : Int) : Int fun sigaction(__signal : Int, __new_action : Sigaction*, __old_action : Sigaction*) : Int fun sigaltstack(__new_signal_stack : StackT*, __old_signal_stack : StackT*) : Int {% if ANDROID_API >= 21 %} # TODO: defined inline for `ANDROID_API < 21` fun signal(__signal : Int, __handler : SighandlerT) : SighandlerT fun sigemptyset(__set : SigsetT*) : Int fun sigfillset(__set : SigsetT*) : Int fun sigaddset(__set : SigsetT*, __signal : Int) : Int fun sigdelset(__set : SigsetT*, __signal : Int) : Int fun sigismember(__set : SigsetT*, __signal : Int) : Int fun sigsuspend(__mask : SigsetT*) : Int {% end %} end