1*24df6592SIngo Weinhold /* 2*24df6592SIngo Weinhold * Copyright 2002-2011, Haiku, Inc. All rights reserved. 3*24df6592SIngo Weinhold * Distributed under the terms of the MIT license. 4*24df6592SIngo Weinhold * 5*24df6592SIngo Weinhold * Author: 6*24df6592SIngo Weinhold * Daniel Reinhold (danielre@users.sf.net) 7*24df6592SIngo Weinhold * Ingo Weinhold, ingo_weinhold@gmx.de 8*24df6592SIngo Weinhold */ 9*24df6592SIngo Weinhold 10*24df6592SIngo Weinhold 11*24df6592SIngo Weinhold #include <string.h> 12*24df6592SIngo Weinhold 13*24df6592SIngo Weinhold #include <errno.h> 14*24df6592SIngo Weinhold #include <signal.h> 15*24df6592SIngo Weinhold #include <stdio.h> 16*24df6592SIngo Weinhold 17*24df6592SIngo Weinhold #include <signal_defs.h> 18*24df6592SIngo Weinhold 19*24df6592SIngo Weinhold 20*24df6592SIngo Weinhold static const char* const kInvalidSignalNumberText = "Bogus signal number"; 21*24df6592SIngo Weinhold 22*24df6592SIngo Weinhold 23*24df6592SIngo Weinhold const char * const 24*24df6592SIngo Weinhold sys_siglist[NSIG] = { 25*24df6592SIngo Weinhold /* 0 */ "Signal 0", 26*24df6592SIngo Weinhold /* 1 - SIGHUP */ "Hangup", 27*24df6592SIngo Weinhold /* 2 - SIGINT */ "Interrupt", 28*24df6592SIngo Weinhold /* 3 - SIGQUIT */ "Quit", 29*24df6592SIngo Weinhold /* 4 - SIGILL */ "Illegal instruction", 30*24df6592SIngo Weinhold /* 5 - SIGCHLD */ "Child exited", 31*24df6592SIngo Weinhold /* 6 - SIGABRT */ "Abort", 32*24df6592SIngo Weinhold /* 7 - SIGPIPE */ "Broken pipe", 33*24df6592SIngo Weinhold /* 8 - SIGFPE */ "Floating point exception", 34*24df6592SIngo Weinhold /* 9 - SIGKILL */ "Killed (by death)", 35*24df6592SIngo Weinhold /* 10 - SIGSTOP */ "Stopped", 36*24df6592SIngo Weinhold /* 11 - SIGSEGV */ "Segmentation violation", 37*24df6592SIngo Weinhold /* 12 - SIGCONT */ "Continued", 38*24df6592SIngo Weinhold /* 13 - SIGTSTP */ "Stopped (tty output)", 39*24df6592SIngo Weinhold /* 14 - SIGALRM */ "Alarm", 40*24df6592SIngo Weinhold /* 15 - SIGTERM */ "Termination requested", 41*24df6592SIngo Weinhold /* 16 - SIGTTIN */ "Stopped (tty input)", 42*24df6592SIngo Weinhold /* 17 - SIGTTOU */ "Stopped (tty output)", 43*24df6592SIngo Weinhold /* 18 - SIGUSR1 */ "User defined signal 1", 44*24df6592SIngo Weinhold /* 19 - SIGUSR2 */ "User defined signal 2", 45*24df6592SIngo Weinhold /* 20 - SIGWINCH */ "Window size changed", 46*24df6592SIngo Weinhold /* 21 - SIGKILLTHR */ "Kill Thread", 47*24df6592SIngo Weinhold /* 22 - SIGTRAP */ "Trace/breakpoint trap", 48*24df6592SIngo Weinhold /* 23 - SIGPOLL */ "Pollable event", 49*24df6592SIngo Weinhold /* 24 - SIGPROF */ "Profiling timer expired", 50*24df6592SIngo Weinhold /* 25 - SIGSYS */ "Bad system call", 51*24df6592SIngo Weinhold /* 26 - SIGURG */ "High bandwidth data is available at socket", 52*24df6592SIngo Weinhold /* 27 - SIGVTALRM */ "Virtual timer expired", 53*24df6592SIngo Weinhold /* 28 - SIGXCPU */ "CPU time limit exceeded", 54*24df6592SIngo Weinhold /* 29 - SIGXFSZ */ "File size limit exceeded", 55*24df6592SIngo Weinhold /* 30 - SIGBUS */ "Bus error", 56*24df6592SIngo Weinhold /* 31 - SIGRESERVED1 */ "Reserved signal 1", 57*24df6592SIngo Weinhold /* 32 - SIGRESERVED2 */ "Reserved signal 2", 58*24df6592SIngo Weinhold /* 33 - realtime 1 */ "Realtime signal 1", 59*24df6592SIngo Weinhold /* 34 - realtime 2 */ "Realtime signal 2", 60*24df6592SIngo Weinhold /* 35 - realtime 3 */ "Realtime signal 3", 61*24df6592SIngo Weinhold /* 36 - realtime 4 */ "Realtime signal 4", 62*24df6592SIngo Weinhold /* 37 - realtime 5 */ "Realtime signal 5", 63*24df6592SIngo Weinhold /* 38 - realtime 6 */ "Realtime signal 6", 64*24df6592SIngo Weinhold /* 39 - realtime 7 */ "Realtime signal 7", 65*24df6592SIngo Weinhold /* 40 - realtime 8 */ "Realtime signal 8", 66*24df6592SIngo Weinhold /* 41 - invalid */ kInvalidSignalNumberText, 67*24df6592SIngo Weinhold /* 42 - invalid */ kInvalidSignalNumberText, 68*24df6592SIngo Weinhold /* 43 - invalid */ kInvalidSignalNumberText, 69*24df6592SIngo Weinhold /* 44 - invalid */ kInvalidSignalNumberText, 70*24df6592SIngo Weinhold /* 45 - invalid */ kInvalidSignalNumberText, 71*24df6592SIngo Weinhold /* 46 - invalid */ kInvalidSignalNumberText, 72*24df6592SIngo Weinhold /* 47 - invalid */ kInvalidSignalNumberText, 73*24df6592SIngo Weinhold /* 48 - invalid */ kInvalidSignalNumberText, 74*24df6592SIngo Weinhold /* 49 - invalid */ kInvalidSignalNumberText, 75*24df6592SIngo Weinhold /* 50 - invalid */ kInvalidSignalNumberText, 76*24df6592SIngo Weinhold /* 51 - invalid */ kInvalidSignalNumberText, 77*24df6592SIngo Weinhold /* 52 - invalid */ kInvalidSignalNumberText, 78*24df6592SIngo Weinhold /* 53 - invalid */ kInvalidSignalNumberText, 79*24df6592SIngo Weinhold /* 54 - invalid */ kInvalidSignalNumberText, 80*24df6592SIngo Weinhold /* 55 - invalid */ kInvalidSignalNumberText, 81*24df6592SIngo Weinhold /* 56 - invalid */ kInvalidSignalNumberText, 82*24df6592SIngo Weinhold /* 57 - invalid */ kInvalidSignalNumberText, 83*24df6592SIngo Weinhold /* 58 - invalid */ kInvalidSignalNumberText, 84*24df6592SIngo Weinhold /* 59 - invalid */ kInvalidSignalNumberText, 85*24df6592SIngo Weinhold /* 60 - invalid */ kInvalidSignalNumberText, 86*24df6592SIngo Weinhold /* 61 - invalid */ kInvalidSignalNumberText, 87*24df6592SIngo Weinhold /* 62 - invalid */ kInvalidSignalNumberText, 88*24df6592SIngo Weinhold /* 63 - invalid */ kInvalidSignalNumberText, 89*24df6592SIngo Weinhold /* 64 - invalid */ kInvalidSignalNumberText 90*24df6592SIngo Weinhold }; 91*24df6592SIngo Weinhold 92*24df6592SIngo Weinhold 93*24df6592SIngo Weinhold const char* 94*24df6592SIngo Weinhold strsignal(int sig) 95*24df6592SIngo Weinhold { 96*24df6592SIngo Weinhold if (sig < 0 || sig > __MAX_SIGNO) 97*24df6592SIngo Weinhold return kInvalidSignalNumberText; 98*24df6592SIngo Weinhold 99*24df6592SIngo Weinhold return sys_siglist[sig]; 100*24df6592SIngo Weinhold } 101*24df6592SIngo Weinhold 102