xref: /linux/tools/perf/trace/beauty/signum.c (revision 05d2a3da153bc08c5fe7937584b5d86505747b9e)
1 // SPDX-License-Identifier: LGPL-2.1
2 #include "trace/beauty/beauty.h"
3 
4 #include <signal.h>
5 
6 size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscall_arg *arg)
7 {
8 	bool show_prefix = arg->show_string_prefix;
9 	const char *prefix = "SIG";
10 	int sig = arg->val;
11 
12 	switch (sig) {
13 #define	P_SIGNUM(n) case SIG##n: return scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", #n)
14 	P_SIGNUM(HUP);
15 	P_SIGNUM(INT);
16 	P_SIGNUM(QUIT);
17 	P_SIGNUM(ILL);
18 	P_SIGNUM(TRAP);
19 	P_SIGNUM(ABRT);
20 	P_SIGNUM(BUS);
21 	P_SIGNUM(FPE);
22 	P_SIGNUM(KILL);
23 	P_SIGNUM(USR1);
24 	P_SIGNUM(SEGV);
25 	P_SIGNUM(USR2);
26 	P_SIGNUM(PIPE);
27 	P_SIGNUM(ALRM);
28 	P_SIGNUM(TERM);
29 	P_SIGNUM(CHLD);
30 	P_SIGNUM(CONT);
31 	P_SIGNUM(STOP);
32 	P_SIGNUM(TSTP);
33 	P_SIGNUM(TTIN);
34 	P_SIGNUM(TTOU);
35 	P_SIGNUM(URG);
36 	P_SIGNUM(XCPU);
37 	P_SIGNUM(XFSZ);
38 	P_SIGNUM(VTALRM);
39 	P_SIGNUM(PROF);
40 	P_SIGNUM(WINCH);
41 	P_SIGNUM(IO);
42 	P_SIGNUM(PWR);
43 	P_SIGNUM(SYS);
44 #ifdef SIGEMT
45 	P_SIGNUM(EMT);
46 #endif
47 #ifdef SIGSTKFLT
48 	P_SIGNUM(STKFLT);
49 #endif
50 #ifdef SIGSWI
51 	P_SIGNUM(SWI);
52 #endif
53 	default: break;
54 	}
55 
56 	return scnprintf(bf, size, "%#x", sig);
57 }
58