1*bb722a7dSDimitry Andric //===-- Definition of Linux signal number macros --------------------------===// 2*bb722a7dSDimitry Andric // 3*bb722a7dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*bb722a7dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*bb722a7dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*bb722a7dSDimitry Andric // 7*bb722a7dSDimitry Andric //===----------------------------------------------------------------------===// 8*bb722a7dSDimitry Andric 9*bb722a7dSDimitry Andric #ifndef LLVM_LIBC_MACROS_LINUX_SIGNAL_MACROS_H 10*bb722a7dSDimitry Andric #define LLVM_LIBC_MACROS_LINUX_SIGNAL_MACROS_H 11*bb722a7dSDimitry Andric 12*bb722a7dSDimitry Andric #define SIGHUP 1 13*bb722a7dSDimitry Andric #define SIGINT 2 14*bb722a7dSDimitry Andric #define SIGQUIT 3 15*bb722a7dSDimitry Andric #define SIGILL 4 16*bb722a7dSDimitry Andric #define SIGTRAP 5 17*bb722a7dSDimitry Andric #define SIGABRT 6 18*bb722a7dSDimitry Andric #define SIGIOT 6 19*bb722a7dSDimitry Andric #define SIGBUS 7 20*bb722a7dSDimitry Andric #define SIGFPE 8 21*bb722a7dSDimitry Andric #define SIGKILL 9 22*bb722a7dSDimitry Andric #define SIGUSR1 10 23*bb722a7dSDimitry Andric #define SIGSEGV 11 24*bb722a7dSDimitry Andric #define SIGUSR2 12 25*bb722a7dSDimitry Andric #define SIGPIPE 13 26*bb722a7dSDimitry Andric #define SIGALRM 14 27*bb722a7dSDimitry Andric #define SIGTERM 15 28*bb722a7dSDimitry Andric #define SIGSTKFLT 16 29*bb722a7dSDimitry Andric #define SIGCHLD 17 30*bb722a7dSDimitry Andric #define SIGCONT 18 31*bb722a7dSDimitry Andric #define SIGSTOP 19 32*bb722a7dSDimitry Andric #define SIGTSTP 20 33*bb722a7dSDimitry Andric #define SIGTTIN 21 34*bb722a7dSDimitry Andric #define SIGTTOU 22 35*bb722a7dSDimitry Andric #define SIGURG 23 36*bb722a7dSDimitry Andric #define SIGXCPU 24 37*bb722a7dSDimitry Andric #define SIGXFSZ 25 38*bb722a7dSDimitry Andric #define SIGVTALRM 26 39*bb722a7dSDimitry Andric #define SIGPROF 27 40*bb722a7dSDimitry Andric #define SIGWINCH 28 41*bb722a7dSDimitry Andric #define SIGIO 29 42*bb722a7dSDimitry Andric #define SIGPOLL SIGIO 43*bb722a7dSDimitry Andric #define SIGPWR 30 44*bb722a7dSDimitry Andric #define SIGSYS 31 45*bb722a7dSDimitry Andric 46*bb722a7dSDimitry Andric // Max signal number 47*bb722a7dSDimitry Andric #define NSIG 64 48*bb722a7dSDimitry Andric 49*bb722a7dSDimitry Andric // SIGRTMIN is current set to the minimum usable from user mode programs. If 50*bb722a7dSDimitry Andric // the libc itself uses some of these signal numbers for private operations, 51*bb722a7dSDimitry Andric // then it has to be adjusted in future to reflect that. 52*bb722a7dSDimitry Andric #define SIGRTMIN 32 53*bb722a7dSDimitry Andric 54*bb722a7dSDimitry Andric #define SIGRTMAX NSIG 55*bb722a7dSDimitry Andric 56*bb722a7dSDimitry Andric // The kernel sigset is stored as an array of long values. Each bit of this 57*bb722a7dSDimitry Andric // array corresponds to a signal, adjusted by 1. That is, bit 0 corresponds 58*bb722a7dSDimitry Andric // to signal number 1, bit 1 corresponds to signal number 2 and so on. The 59*bb722a7dSDimitry Andric // below macro denotes the size of that array (in number of long words and 60*bb722a7dSDimitry Andric // not bytes). 61*bb722a7dSDimitry Andric #define __NSIGSET_WORDS (NSIG / (sizeof(unsigned long) * 8)) 62*bb722a7dSDimitry Andric 63*bb722a7dSDimitry Andric #define SIG_BLOCK 0 // For blocking signals 64*bb722a7dSDimitry Andric #define SIG_UNBLOCK 1 // For unblocking signals 65*bb722a7dSDimitry Andric #define SIG_SETMASK 2 // For setting signal mask 66*bb722a7dSDimitry Andric 67*bb722a7dSDimitry Andric // Flag values to be used for setting sigaction.sa_flags. 68*bb722a7dSDimitry Andric #define SA_NOCLDSTOP 0x00000001 69*bb722a7dSDimitry Andric #define SA_NOCLDWAIT 0x00000002 70*bb722a7dSDimitry Andric #define SA_SIGINFO 0x00000004 71*bb722a7dSDimitry Andric #define SA_RESTART 0x10000000 72*bb722a7dSDimitry Andric #define SA_RESTORER 0x04000000 73*bb722a7dSDimitry Andric #define SA_ONSTACK 0x08000000 74*bb722a7dSDimitry Andric 75*bb722a7dSDimitry Andric // Signal stack flags 76*bb722a7dSDimitry Andric #define SS_ONSTACK 0x1 77*bb722a7dSDimitry Andric #define SS_DISABLE 0x2 78*bb722a7dSDimitry Andric 79*bb722a7dSDimitry Andric #if defined(__x86_64__) || defined(__i386__) || defined(__riscv) 80*bb722a7dSDimitry Andric #define MINSIGSTKSZ 2048 81*bb722a7dSDimitry Andric #define SIGSTKSZ 8192 82*bb722a7dSDimitry Andric #elif defined(__aarch64__) 83*bb722a7dSDimitry Andric #define MINSIGSTKSZ 5120 84*bb722a7dSDimitry Andric #define SIGSTKSZ 16384 85*bb722a7dSDimitry Andric #else 86*bb722a7dSDimitry Andric #error "Signal stack sizes not defined for your platform." 87*bb722a7dSDimitry Andric #endif 88*bb722a7dSDimitry Andric 89*bb722a7dSDimitry Andric #define SIG_DFL ((void (*)(int))0) 90*bb722a7dSDimitry Andric #define SIG_IGN ((void (*)(int))1) 91*bb722a7dSDimitry Andric #define SIG_ERR ((void (*)(int))(-1)) 92*bb722a7dSDimitry Andric 93*bb722a7dSDimitry Andric // SIGCHLD si_codes 94*bb722a7dSDimitry Andric #define CLD_EXITED 1 // child has exited 95*bb722a7dSDimitry Andric #define CLD_KILLED 2 // child was killed 96*bb722a7dSDimitry Andric #define CLD_DUMPED 3 // child terminated abnormally 97*bb722a7dSDimitry Andric #define CLD_TRAPPED 4 // traced child has trapped 98*bb722a7dSDimitry Andric #define CLD_STOPPED 5 // child has stopped 99*bb722a7dSDimitry Andric #define CLD_CONTINUED 6 // stopped child has continued 100*bb722a7dSDimitry Andric 101*bb722a7dSDimitry Andric #endif // LLVM_LIBC_MACROS_LINUX_SIGNAL_MACROS_H 102