1*4882a593Smuzhiyun #include <linux/signal.h> 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #define SIGUNKNOWN 0 4*4882a593Smuzhiyun #define MAXMAPPED_SIG 35 5*4882a593Smuzhiyun #define MAXMAPPED_SIGNAME (MAXMAPPED_SIG + 1) 6*4882a593Smuzhiyun #define SIGRT_BASE 128 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* provide a mapping of arch signal to internal signal # for mediation 9*4882a593Smuzhiyun * those that are always an alias SIGCLD for SIGCLHD and SIGPOLL for SIGIO 10*4882a593Smuzhiyun * map to the same entry those that may/or may not get a separate entry 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun static const int sig_map[MAXMAPPED_SIG] = { 13*4882a593Smuzhiyun [0] = MAXMAPPED_SIG, /* existence test */ 14*4882a593Smuzhiyun [SIGHUP] = 1, 15*4882a593Smuzhiyun [SIGINT] = 2, 16*4882a593Smuzhiyun [SIGQUIT] = 3, 17*4882a593Smuzhiyun [SIGILL] = 4, 18*4882a593Smuzhiyun [SIGTRAP] = 5, /* -, 5, - */ 19*4882a593Smuzhiyun [SIGABRT] = 6, /* SIGIOT: -, 6, - */ 20*4882a593Smuzhiyun [SIGBUS] = 7, /* 10, 7, 10 */ 21*4882a593Smuzhiyun [SIGFPE] = 8, 22*4882a593Smuzhiyun [SIGKILL] = 9, 23*4882a593Smuzhiyun [SIGUSR1] = 10, /* 30, 10, 16 */ 24*4882a593Smuzhiyun [SIGSEGV] = 11, 25*4882a593Smuzhiyun [SIGUSR2] = 12, /* 31, 12, 17 */ 26*4882a593Smuzhiyun [SIGPIPE] = 13, 27*4882a593Smuzhiyun [SIGALRM] = 14, 28*4882a593Smuzhiyun [SIGTERM] = 15, 29*4882a593Smuzhiyun #ifdef SIGSTKFLT 30*4882a593Smuzhiyun [SIGSTKFLT] = 16, /* -, 16, - */ 31*4882a593Smuzhiyun #endif 32*4882a593Smuzhiyun [SIGCHLD] = 17, /* 20, 17, 18. SIGCHLD -, -, 18 */ 33*4882a593Smuzhiyun [SIGCONT] = 18, /* 19, 18, 25 */ 34*4882a593Smuzhiyun [SIGSTOP] = 19, /* 17, 19, 23 */ 35*4882a593Smuzhiyun [SIGTSTP] = 20, /* 18, 20, 24 */ 36*4882a593Smuzhiyun [SIGTTIN] = 21, /* 21, 21, 26 */ 37*4882a593Smuzhiyun [SIGTTOU] = 22, /* 22, 22, 27 */ 38*4882a593Smuzhiyun [SIGURG] = 23, /* 16, 23, 21 */ 39*4882a593Smuzhiyun [SIGXCPU] = 24, /* 24, 24, 30 */ 40*4882a593Smuzhiyun [SIGXFSZ] = 25, /* 25, 25, 31 */ 41*4882a593Smuzhiyun [SIGVTALRM] = 26, /* 26, 26, 28 */ 42*4882a593Smuzhiyun [SIGPROF] = 27, /* 27, 27, 29 */ 43*4882a593Smuzhiyun [SIGWINCH] = 28, /* 28, 28, 20 */ 44*4882a593Smuzhiyun [SIGIO] = 29, /* SIGPOLL: 23, 29, 22 */ 45*4882a593Smuzhiyun [SIGPWR] = 30, /* 29, 30, 19. SIGINFO 29, -, - */ 46*4882a593Smuzhiyun #ifdef SIGSYS 47*4882a593Smuzhiyun [SIGSYS] = 31, /* 12, 31, 12. often SIG LOST/UNUSED */ 48*4882a593Smuzhiyun #endif 49*4882a593Smuzhiyun #ifdef SIGEMT 50*4882a593Smuzhiyun [SIGEMT] = 32, /* 7, - , 7 */ 51*4882a593Smuzhiyun #endif 52*4882a593Smuzhiyun #if defined(SIGLOST) && SIGPWR != SIGLOST /* sparc */ 53*4882a593Smuzhiyun [SIGLOST] = 33, /* unused on Linux */ 54*4882a593Smuzhiyun #endif 55*4882a593Smuzhiyun #if defined(SIGUNUSED) && \ 56*4882a593Smuzhiyun defined(SIGLOST) && defined(SIGSYS) && SIGLOST != SIGSYS 57*4882a593Smuzhiyun [SIGUNUSED] = 34, /* -, 31, - */ 58*4882a593Smuzhiyun #endif 59*4882a593Smuzhiyun }; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* this table is ordered post sig_map[sig] mapping */ 62*4882a593Smuzhiyun static const char *const sig_names[MAXMAPPED_SIGNAME] = { 63*4882a593Smuzhiyun "unknown", 64*4882a593Smuzhiyun "hup", 65*4882a593Smuzhiyun "int", 66*4882a593Smuzhiyun "quit", 67*4882a593Smuzhiyun "ill", 68*4882a593Smuzhiyun "trap", 69*4882a593Smuzhiyun "abrt", 70*4882a593Smuzhiyun "bus", 71*4882a593Smuzhiyun "fpe", 72*4882a593Smuzhiyun "kill", 73*4882a593Smuzhiyun "usr1", 74*4882a593Smuzhiyun "segv", 75*4882a593Smuzhiyun "usr2", 76*4882a593Smuzhiyun "pipe", 77*4882a593Smuzhiyun "alrm", 78*4882a593Smuzhiyun "term", 79*4882a593Smuzhiyun "stkflt", 80*4882a593Smuzhiyun "chld", 81*4882a593Smuzhiyun "cont", 82*4882a593Smuzhiyun "stop", 83*4882a593Smuzhiyun "stp", 84*4882a593Smuzhiyun "ttin", 85*4882a593Smuzhiyun "ttou", 86*4882a593Smuzhiyun "urg", 87*4882a593Smuzhiyun "xcpu", 88*4882a593Smuzhiyun "xfsz", 89*4882a593Smuzhiyun "vtalrm", 90*4882a593Smuzhiyun "prof", 91*4882a593Smuzhiyun "winch", 92*4882a593Smuzhiyun "io", 93*4882a593Smuzhiyun "pwr", 94*4882a593Smuzhiyun "sys", 95*4882a593Smuzhiyun "emt", 96*4882a593Smuzhiyun "lost", 97*4882a593Smuzhiyun "unused", 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun "exists", /* always last existence test mapped to MAXMAPPED_SIG */ 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun 102