162306a36Sopenharmony_ci// SPDX-License-Identifier: LGPL-2.1
262306a36Sopenharmony_ci#include <signal.h>
362306a36Sopenharmony_ci
462306a36Sopenharmony_cistatic size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscall_arg *arg)
562306a36Sopenharmony_ci{
662306a36Sopenharmony_ci	bool show_prefix = arg->show_string_prefix;
762306a36Sopenharmony_ci	const char *prefix = "SIG";
862306a36Sopenharmony_ci	int sig = arg->val;
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci	switch (sig) {
1162306a36Sopenharmony_ci#define	P_SIGNUM(n) case SIG##n: return scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", #n)
1262306a36Sopenharmony_ci	P_SIGNUM(HUP);
1362306a36Sopenharmony_ci	P_SIGNUM(INT);
1462306a36Sopenharmony_ci	P_SIGNUM(QUIT);
1562306a36Sopenharmony_ci	P_SIGNUM(ILL);
1662306a36Sopenharmony_ci	P_SIGNUM(TRAP);
1762306a36Sopenharmony_ci	P_SIGNUM(ABRT);
1862306a36Sopenharmony_ci	P_SIGNUM(BUS);
1962306a36Sopenharmony_ci	P_SIGNUM(FPE);
2062306a36Sopenharmony_ci	P_SIGNUM(KILL);
2162306a36Sopenharmony_ci	P_SIGNUM(USR1);
2262306a36Sopenharmony_ci	P_SIGNUM(SEGV);
2362306a36Sopenharmony_ci	P_SIGNUM(USR2);
2462306a36Sopenharmony_ci	P_SIGNUM(PIPE);
2562306a36Sopenharmony_ci	P_SIGNUM(ALRM);
2662306a36Sopenharmony_ci	P_SIGNUM(TERM);
2762306a36Sopenharmony_ci	P_SIGNUM(CHLD);
2862306a36Sopenharmony_ci	P_SIGNUM(CONT);
2962306a36Sopenharmony_ci	P_SIGNUM(STOP);
3062306a36Sopenharmony_ci	P_SIGNUM(TSTP);
3162306a36Sopenharmony_ci	P_SIGNUM(TTIN);
3262306a36Sopenharmony_ci	P_SIGNUM(TTOU);
3362306a36Sopenharmony_ci	P_SIGNUM(URG);
3462306a36Sopenharmony_ci	P_SIGNUM(XCPU);
3562306a36Sopenharmony_ci	P_SIGNUM(XFSZ);
3662306a36Sopenharmony_ci	P_SIGNUM(VTALRM);
3762306a36Sopenharmony_ci	P_SIGNUM(PROF);
3862306a36Sopenharmony_ci	P_SIGNUM(WINCH);
3962306a36Sopenharmony_ci	P_SIGNUM(IO);
4062306a36Sopenharmony_ci	P_SIGNUM(PWR);
4162306a36Sopenharmony_ci	P_SIGNUM(SYS);
4262306a36Sopenharmony_ci#ifdef SIGEMT
4362306a36Sopenharmony_ci	P_SIGNUM(EMT);
4462306a36Sopenharmony_ci#endif
4562306a36Sopenharmony_ci#ifdef SIGSTKFLT
4662306a36Sopenharmony_ci	P_SIGNUM(STKFLT);
4762306a36Sopenharmony_ci#endif
4862306a36Sopenharmony_ci#ifdef SIGSWI
4962306a36Sopenharmony_ci	P_SIGNUM(SWI);
5062306a36Sopenharmony_ci#endif
5162306a36Sopenharmony_ci	default: break;
5262306a36Sopenharmony_ci	}
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	return scnprintf(bf, size, "%#x", sig);
5562306a36Sopenharmony_ci}
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#define SCA_SIGNUM syscall_arg__scnprintf_signum
58