blob: d8dd9148ba2679a1e11fb285ee07f389e1418d56 [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/libc/aos_strsignal.h"
Brian Silvermanaf784862014-05-13 08:14:55 -07002
Stephan Pleines4b02e7b2024-05-30 20:29:39 -07003#include <features.h>
4#include <stdio.h>
5#include <string.h>
6
Tyler Chatowbf0609c2021-07-31 16:13:27 -07007#include <csignal>
Brian Silvermanaf784862014-05-13 08:14:55 -07008
Austin Schuh99f7c6a2024-06-25 22:07:44 -07009#include "absl/log/check.h"
10#include "absl/log/log.h"
Brian Silvermanb47f5552020-10-01 15:08:14 -070011
Brian Silvermanaf784862014-05-13 08:14:55 -070012const char *aos_strsignal(int signal) {
Austin Schuhf7bfb652023-08-25 14:22:50 -070013 thread_local char buffer[512];
Brian Silvermanaf784862014-05-13 08:14:55 -070014
15 if (signal >= SIGRTMIN && signal <= SIGRTMAX) {
Alex Perrycb7da4b2019-08-28 19:35:56 -070016 CHECK_GT(snprintf(buffer, sizeof(buffer), "Real-time signal %d",
17 signal - SIGRTMIN),
18 0);
Brian Silvermanaf784862014-05-13 08:14:55 -070019 return buffer;
20 }
21
Brennan Coslettb15e6b22023-04-05 18:27:36 -050022// sys_strsignal depricated in glibc2.32
23#ifdef __GLIBC__
Philipp Schrader790cb542023-07-05 21:06:52 -070024#if __GLIBC_PREREQ(2, 32)
Brennan Coslettb15e6b22023-04-05 18:27:36 -050025 if (signal > 0 && signal < NSIG && sigdescr_np(signal) != nullptr) {
26 return sigdescr_np(signal);
27 }
Philipp Schrader790cb542023-07-05 21:06:52 -070028#else
Brian Silvermanaf784862014-05-13 08:14:55 -070029 if (signal > 0 && signal < NSIG && sys_siglist[signal] != nullptr) {
30 return sys_siglist[signal];
31 }
Philipp Schrader790cb542023-07-05 21:06:52 -070032#endif
Brennan Coslettb15e6b22023-04-05 18:27:36 -050033// If not using GLIBC assume we can use sys_siglist
34#else
35 if (signal > 0 && signal < NSIG && sys_siglist[signal] != nullptr) {
36 return sys_siglist[signal];
37 }
38#endif
Brian Silvermanaf784862014-05-13 08:14:55 -070039
Alex Perrycb7da4b2019-08-28 19:35:56 -070040 CHECK_GT(snprintf(buffer, sizeof(buffer), "Unknown signal %d", signal), 0);
Brian Silvermanaf784862014-05-13 08:14:55 -070041 return buffer;
42}