Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/linux/strsignal.c')
-rw-r--r--newlib/libc/sys/linux/strsignal.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/newlib/libc/sys/linux/strsignal.c b/newlib/libc/sys/linux/strsignal.c
new file mode 100644
index 000000000..3f95e18a7
--- /dev/null
+++ b/newlib/libc/sys/linux/strsignal.c
@@ -0,0 +1,63 @@
+#include <string.h>
+#include <signal.h>
+#include <stdio.h>
+#include <reent.h>
+
+static const char *sigstring[] =
+ {
+ "Signal 0",
+ "Hangup",
+ "Interrupt",
+ "Quit",
+ "Illegal instruction",
+ "Trace/breakpoint trap",
+ "IOT trap",
+ "EMT trap",
+ "Floating point exception",
+ "Killed",
+ "Bus error",
+ "Segmentation fault",
+ "Bad system call",
+ "Broken pipe",
+ "Alarm clock",
+ "Terminated",
+ "Urgent I/O condition",
+ "Stopped (signal)",
+ "Stopped",
+ "Continued",
+ "Child exited",
+ "Stopped (tty input)",
+ "Stopped (tty output)",
+ "I/O possible",
+ "CPU time limit exceeded",
+ "File size limit exceeded",
+ "Virtual timer expired",
+ "Profiling timer expired",
+ "Window changed",
+ "Resource lost",
+ "User defined signal 1",
+ "User defined signal 2"
+ };
+
+char *
+strsignal (int sig)
+{
+ if (sig < 0 || sig >= __SIGRTMIN)
+ {
+ char *buffer;
+ struct _reent *ptr;
+
+ ptr = _REENT;
+
+ _REENT_CHECK_SIGNAL_BUF(ptr);
+ buffer = _REENT_SIGNAL_BUF(ptr);
+
+ if (sig < 0 || sig > __SIGRTMAX)
+ siprintf (buffer, "Unknown signal %d", sig);
+ else
+ siprintf (buffer, "Real-time signal %d", sig - __SIGRTMIN);
+ return buffer;
+ }
+ else
+ return sigstring[sig];
+}