Applied a patch from Alexander Deynichenko: added missing signal definitions.

That also includes some XSI signals, SIGPOLL and SIGVTALRM, dunno if we will every support
those in a useful way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14593 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2005-10-31 12:39:29 +00:00
parent 4d9b4412bd
commit 0e1358bd5c
3 changed files with 49 additions and 26 deletions

View File

@ -87,39 +87,46 @@ typedef struct stack_t {
* some consistency with UN*X conventions so that things * some consistency with UN*X conventions so that things
* like "kill -9" do what you expect. * like "kill -9" do what you expect.
*/ */
#define SIGHUP 1 /* hangup -- tty is gone! */ #define SIGHUP 1 /* hangup -- tty is gone! */
#define SIGINT 2 /* interrupt */ #define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* `quit' special character typed in tty */ #define SIGQUIT 3 /* `quit' special character typed in tty */
#define SIGILL 4 /* illegal instruction */ #define SIGILL 4 /* illegal instruction */
#define SIGCHLD 5 /* child process exited */ #define SIGCHLD 5 /* child process exited */
#define SIGABRT 6 /* abort() called, dont' catch */ #define SIGABRT 6 /* abort() called, dont' catch */
#define SIGPIPE 7 /* write to a pipe w/no readers */ #define SIGPIPE 7 /* write to a pipe w/no readers */
#define SIGFPE 8 /* floating point exception */ #define SIGFPE 8 /* floating point exception */
#define SIGKILL 9 /* kill a team (not catchable) */ #define SIGKILL 9 /* kill a team (not catchable) */
#define SIGSTOP 10 /* suspend a thread (not catchable) */ #define SIGSTOP 10 /* suspend a thread (not catchable) */
#define SIGSEGV 11 /* segmentation violation (read: invalid pointer) */ #define SIGSEGV 11 /* segmentation violation (read: invalid pointer) */
#define SIGCONT 12 /* continue execution if suspended */ #define SIGCONT 12 /* continue execution if suspended */
#define SIGTSTP 13 /* `stop' special character typed in tty */ #define SIGTSTP 13 /* `stop' special character typed in tty */
#define SIGALRM 14 /* an alarm has gone off (see alarm()) */ #define SIGALRM 14 /* an alarm has gone off (see alarm()) */
#define SIGTERM 15 /* termination requested */ #define SIGTERM 15 /* termination requested */
#define SIGTTIN 16 /* read of tty from bg process */ #define SIGTTIN 16 /* read of tty from bg process */
#define SIGTTOU 17 /* write to tty from bg process */ #define SIGTTOU 17 /* write to tty from bg process */
#define SIGUSR1 18 /* app defined signal 1 */ #define SIGUSR1 18 /* app defined signal 1 */
#define SIGUSR2 19 /* app defined signal 2 */ #define SIGUSR2 19 /* app defined signal 2 */
#define SIGWINCH 20 /* tty window size changed */ #define SIGWINCH 20 /* tty window size changed */
#define SIGKILLTHR 21 /* be specific: kill just the thread, not team */ #define SIGKILLTHR 21 /* be specific: kill just the thread, not team */
#define SIGTRAP 22 #define SIGTRAP 22 /* Trace/breakpoint trap */
#define SIGPOLL 23 /* Pollable event */
#define SIGPROF 24 /* Profiling timer expired */
#define SIGSYS 25 /* Bad system call */
#define SIGURG 26 /* High bandwidth data is available at socket */
#define SIGVTALRM 27 /* Virtual timer expired */
#define SIGXCPU 28 /* CPU time limit exceeded */
#define SIGXFSZ 29 /* File size limit exceeded */
#define SIGBUS SIGSEGV /* for old style code */ #define SIGBUS SIGSEGV /* for old style code */
/* /*
* Signal numbers 23-32 are currently free but may be used in future * Signal numbers 30-32 are currently free but may be used in future
* releases. Use them at your own peril (if you do use them, at least * releases. Use them at your own peril (if you do use them, at least
* be smart and use them backwards from signal 32). * be smart and use them backwards from signal 32).
*/ */
#define MAX_SIGNO 32 /* the most signals that a single thread can reference */ #define MAX_SIGNO 32 /* the most signals that a single thread can reference */
#define __signal_max 22 /* the largest signal number that is actually defined */ #define __signal_max 29 /* the largest signal number that is actually defined */
#define NSIG (__signal_max+1) /* the number of defined signals */ #define NSIG (__signal_max+1) /* the number of defined signals */

View File

@ -39,7 +39,8 @@
const char * const sigstr[NSIG] = { const char * const sigstr[NSIG] = {
"NONE", "HUP", "INT", "QUIT", "ILL", "CHLD", "ABRT", "PIPE", "NONE", "HUP", "INT", "QUIT", "ILL", "CHLD", "ABRT", "PIPE",
"FPE", "KILL", "STOP", "SEGV", "CONT", "TSTP", "ALRM", "TERM", "FPE", "KILL", "STOP", "SEGV", "CONT", "TSTP", "ALRM", "TERM",
"TTIN", "TTOU", "USR1", "USR2", "WINCH", "KILLTHR", "TRAP" "TTIN", "TTOU", "USR1", "USR2", "WINCH", "KILLTHR", "TRAP",
"POLL", "PROF", "SYS", "URG", "VTALRM", "XCPU", "XFSZ"
}; };
@ -127,6 +128,7 @@ handle_signals(struct thread *thread)
case SIGTTIN: case SIGTTIN:
case SIGTTOU: case SIGTTOU:
case SIGCONT: case SIGCONT:
case SIGURG:
// notify the debugger // notify the debugger
if (debugSignal) if (debugSignal)
notify_debugger(thread, signal, handler, false); notify_debugger(thread, signal, handler, false);
@ -148,6 +150,12 @@ handle_signals(struct thread *thread)
case SIGABRT: case SIGABRT:
case SIGFPE: case SIGFPE:
case SIGSEGV: case SIGSEGV:
case SIGPOLL:
case SIGPROF:
case SIGSYS:
case SIGVTALRM:
case SIGXCPU:
case SIGXFSZ:
TRACE(("Shutting down thread 0x%lx due to signal #%d\n", TRACE(("Shutting down thread 0x%lx due to signal #%d\n",
thread->id, signal)); thread->id, signal));
case SIGKILL: case SIGKILL:

View File

@ -41,7 +41,15 @@ sys_siglist[NSIG] = {
/* 19 - SIGUSR2 */ "User defined signal 2", /* 19 - SIGUSR2 */ "User defined signal 2",
/* 20 - SIGWINCH */ "Window size changed", /* 20 - SIGWINCH */ "Window size changed",
/* 21 - SIGKILLTHR */ "Kill Thread", /* 21 - SIGKILLTHR */ "Kill Thread",
/* 22 - SIGTRAP */ NULL /* 22 - SIGTRAP */ "Trace/breakpoint trap",
/* 23 - SIGPOLL */ "Pollable event",
/* 24 - SIGPROF */ "Profiling timer expired",
/* 25 - SIGSYS */ "Bad system call",
/* 26 - SIGURG */ "High bandwidth data is available at socket",
/* 27 - SIGVTALRM */ "Virtual timer expired",
/* 28 - SIGXCPU */ "CPU time limit exceeded",
/* 29 - SIGXFSZ */ "File size limit exceeded",
NULL
}; };