/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include __BEGIN_DECLS typedef void (*__sighandler_t)(int); typedef __sighandler_t sighandler_t; typedef uint32_t sigset_t; typedef uint32_t sig_atomic_t; union sigval { int sival_int; void* sival_ptr; }; typedef struct siginfo { int si_signo; int si_code; pid_t si_pid; uid_t si_uid; void* si_addr; int si_status; union sigval si_value; } siginfo_t; struct sigaction { union { void (*sa_handler)(int); void (*sa_sigaction)(int, siginfo_t*, void*); }; sigset_t sa_mask; int sa_flags; }; int kill(pid_t, int sig); int killpg(int pgrp, int sig); sighandler_t signal(int sig, sighandler_t); int pthread_sigmask(int how, const sigset_t* set, sigset_t* old_set); int sigaction(int sig, const struct sigaction* act, struct sigaction* old_act); int sigemptyset(sigset_t*); int sigfillset(sigset_t*); int sigaddset(sigset_t*, int sig); int sigdelset(sigset_t*, int sig); int sigismember(const sigset_t*, int sig); int sigprocmask(int how, const sigset_t* set, sigset_t* old_set); int sigpending(sigset_t*); int sigsuspend(const sigset_t*); int raise(int sig); int getsignalbyname(const char*); const char* getsignalname(int); extern const char* sys_siglist[NSIG]; #define SIG_DFL ((__sighandler_t)0) #define SIG_ERR ((__sighandler_t)-1) #define SIG_IGN ((__sighandler_t)1) #define SA_NOCLDSTOP 1 #define SA_NOCLDWAIT 2 #define SA_SIGINFO 4 #define SA_ONSTACK 0x08000000 #define SA_RESTART 0x10000000 #define SA_NODEFER 0x40000000 #define SA_RESETHAND 0x80000000 #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND #define SIG_BLOCK 0 #define SIG_UNBLOCK 1 #define SIG_SETMASK 2 #define CLD_EXITED 0 #define CLD_KILLED 1 #define CLD_DUMPED 2 #define CLD_TRAPPED 3 #define CLD_STOPPED 4 #define CLD_CONTINUED 5 __END_DECLS