15#if defined(__linux__) && !defined(__mips__)
55#define ADD_SIGCODE(signal_name, signal_value, code_name, code_value, ...) \
56 static_assert(signal_name == signal_value, \
57 "Value mismatch for signal number " #signal_name); \
58 static_assert(code_name == code_value, \
59 "Value mismatch for signal code " #code_name); \
60 AddSignalCode(signal_value, code_value, __VA_ARGS__)
62#define ADD_SIGCODE(signal_name, signal_value, code_name, code_value, ...) \
63 AddSignalCode(signal_value, code_value, __VA_ARGS__)
66#define ADD_LINUX_SIGNAL(signo, name, ...) \
67 AddSignal(signo, name, __VA_ARGS__); \
68 ADD_SIGCODE(signo, signo, SI_USER, 0, "sent by kill, sigsend or raise", \
69 SignalCodePrintOption::Sender); \
70 ADD_SIGCODE(signo, signo, SI_KERNEL, 0x80, "sent by kernel (SI_KERNEL)", \
71 SignalCodePrintOption::Sender); \
72 ADD_SIGCODE(signo, signo, SI_QUEUE, -1, "sent by sigqueue", \
73 SignalCodePrintOption::Sender); \
74 ADD_SIGCODE(signo, signo, SI_TIMER, -2, "sent by timer expiration", \
75 SignalCodePrintOption::Sender); \
76 ADD_SIGCODE(signo, signo, SI_MESGQ, -3, \
77 "sent by real time mesq state change", \
78 SignalCodePrintOption::Sender); \
79 ADD_SIGCODE(signo, signo, SI_ASYNCIO, -4, "sent by AIO completion", \
80 SignalCodePrintOption::Sender); \
81 ADD_SIGCODE(signo, signo, SI_SIGIO, -5, "sent by queued SIGIO", \
82 SignalCodePrintOption::Sender); \
83 ADD_SIGCODE(signo, signo, SI_TKILL, -6, "sent by tkill system call", \
84 SignalCodePrintOption::Sender); \
85 ADD_SIGCODE(signo, signo, SI_DETHREAD, -7, \
86 "sent by execve() killing subsidiary threads", \
87 SignalCodePrintOption::Sender); \
88 ADD_SIGCODE(signo, signo, SI_ASYNCNL, -60, \
89 "sent by glibc async name lookup completion", \
90 SignalCodePrintOption::Sender);
115 ADD_LINUX_SIGNAL(5,
"SIGTRAP",
true,
true,
true,
"trace trap (not reset when caught)");
116 ADD_LINUX_SIGNAL(6,
"SIGABRT",
false,
true,
true,
"abort()/IOT trap",
"SIGIOT");
123 ADD_LINUX_SIGNAL(8,
"SIGFPE",
false,
true,
true,
"floating point exception");
134 ADD_LINUX_SIGNAL(10,
"SIGUSR1",
false,
true,
true,
"user defined signal 1");
136 ADD_LINUX_SIGNAL(11,
"SIGSEGV",
false,
true,
true,
"segmentation violation");
147 ADD_LINUX_SIGNAL(12,
"SIGUSR2",
false,
true,
true,
"user defined signal 2");
148 ADD_LINUX_SIGNAL(13,
"SIGPIPE",
false,
true,
true,
"write to pipe with reading end closed");
150 ADD_LINUX_SIGNAL(15,
"SIGTERM",
false,
true,
true,
"termination requested");
152 ADD_LINUX_SIGNAL(17,
"SIGCHLD",
false,
false,
true,
"child status has changed",
"SIGCLD");
159 ADD_LINUX_SIGNAL(24,
"SIGXCPU",
false,
true,
true,
"CPU resource exceeded");
160 ADD_LINUX_SIGNAL(25,
"SIGXFSZ",
false,
true,
true,
"file size limit exceeded");
162 ADD_LINUX_SIGNAL(27,
"SIGPROF",
false,
false,
false,
"profiling time alarm");
164 ADD_LINUX_SIGNAL(29,
"SIGIO",
false,
true,
true,
"input/output ready/Pollable event",
"SIGPOLL");
167 ADD_LINUX_SIGNAL(32,
"SIG32",
false,
false,
false,
"threading library internal signal 1");
168 ADD_LINUX_SIGNAL(33,
"SIG33",
false,
false,
false,
"threading library internal signal 2");
169 ADD_LINUX_SIGNAL(34,
"SIGRTMIN",
false,
false,
false,
"real time signal 0");
170 ADD_LINUX_SIGNAL(35,
"SIGRTMIN+1",
false,
false,
false,
"real time signal 1");
171 ADD_LINUX_SIGNAL(36,
"SIGRTMIN+2",
false,
false,
false,
"real time signal 2");
172 ADD_LINUX_SIGNAL(37,
"SIGRTMIN+3",
false,
false,
false,
"real time signal 3");
173 ADD_LINUX_SIGNAL(38,
"SIGRTMIN+4",
false,
false,
false,
"real time signal 4");
174 ADD_LINUX_SIGNAL(39,
"SIGRTMIN+5",
false,
false,
false,
"real time signal 5");
175 ADD_LINUX_SIGNAL(40,
"SIGRTMIN+6",
false,
false,
false,
"real time signal 6");
176 ADD_LINUX_SIGNAL(41,
"SIGRTMIN+7",
false,
false,
false,
"real time signal 7");
177 ADD_LINUX_SIGNAL(42,
"SIGRTMIN+8",
false,
false,
false,
"real time signal 8");
178 ADD_LINUX_SIGNAL(43,
"SIGRTMIN+9",
false,
false,
false,
"real time signal 9");
179 ADD_LINUX_SIGNAL(44,
"SIGRTMIN+10",
false,
false,
false,
"real time signal 10");
180 ADD_LINUX_SIGNAL(45,
"SIGRTMIN+11",
false,
false,
false,
"real time signal 11");
181 ADD_LINUX_SIGNAL(46,
"SIGRTMIN+12",
false,
false,
false,
"real time signal 12");
182 ADD_LINUX_SIGNAL(47,
"SIGRTMIN+13",
false,
false,
false,
"real time signal 13");
183 ADD_LINUX_SIGNAL(48,
"SIGRTMIN+14",
false,
false,
false,
"real time signal 14");
184 ADD_LINUX_SIGNAL(49,
"SIGRTMIN+15",
false,
false,
false,
"real time signal 15");
185 ADD_LINUX_SIGNAL(50,
"SIGRTMAX-14",
false,
false,
false,
"real time signal 16");
186 ADD_LINUX_SIGNAL(51,
"SIGRTMAX-13",
false,
false,
false,
"real time signal 17");
187 ADD_LINUX_SIGNAL(52,
"SIGRTMAX-12",
false,
false,
false,
"real time signal 18");
188 ADD_LINUX_SIGNAL(53,
"SIGRTMAX-11",
false,
false,
false,
"real time signal 19");
189 ADD_LINUX_SIGNAL(54,
"SIGRTMAX-10",
false,
false,
false,
"real time signal 20");
190 ADD_LINUX_SIGNAL(55,
"SIGRTMAX-9",
false,
false,
false,
"real time signal 21");
191 ADD_LINUX_SIGNAL(56,
"SIGRTMAX-8",
false,
false,
false,
"real time signal 22");
192 ADD_LINUX_SIGNAL(57,
"SIGRTMAX-7",
false,
false,
false,
"real time signal 23");
193 ADD_LINUX_SIGNAL(58,
"SIGRTMAX-6",
false,
false,
false,
"real time signal 24");
194 ADD_LINUX_SIGNAL(59,
"SIGRTMAX-5",
false,
false,
false,
"real time signal 25");
195 ADD_LINUX_SIGNAL(60,
"SIGRTMAX-4",
false,
false,
false,
"real time signal 26");
196 ADD_LINUX_SIGNAL(61,
"SIGRTMAX-3",
false,
false,
false,
"real time signal 27");
197 ADD_LINUX_SIGNAL(62,
"SIGRTMAX-2",
false,
false,
false,
"real time signal 28");
198 ADD_LINUX_SIGNAL(63,
"SIGRTMAX-1",
false,
false,
false,
"real time signal 29");
199 ADD_LINUX_SIGNAL(64,
"SIGRTMAX",
false,
false,
false,
"real time signal 30");
#define ADD_SIGCODE(signal_name, signal_value, code_name, code_value,...)
#define ADD_LINUX_SIGNAL(signo, name,...)
A class that represents a running process on the host machine.