1*30fdc8d8SChris Lattner //===-- SysSignal.cpp -------------------------------------------*- C++ -*-===//
2*30fdc8d8SChris Lattner //
3*30fdc8d8SChris Lattner //                     The LLVM Compiler Infrastructure
4*30fdc8d8SChris Lattner //
5*30fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source
6*30fdc8d8SChris Lattner // License. See LICENSE.TXT for details.
7*30fdc8d8SChris Lattner //
8*30fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
9*30fdc8d8SChris Lattner //
10*30fdc8d8SChris Lattner //  Created by Greg Clayton on 6/18/07.
11*30fdc8d8SChris Lattner //
12*30fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
13*30fdc8d8SChris Lattner 
14*30fdc8d8SChris Lattner #include "SysSignal.h"
15*30fdc8d8SChris Lattner #include <signal.h>
16*30fdc8d8SChris Lattner #include <stddef.h>
17*30fdc8d8SChris Lattner 
18*30fdc8d8SChris Lattner const char *
19*30fdc8d8SChris Lattner SysSignal::Name(int signal)
20*30fdc8d8SChris Lattner {
21*30fdc8d8SChris Lattner     switch (signal)
22*30fdc8d8SChris Lattner     {
23*30fdc8d8SChris Lattner     case SIGHUP:    return "SIGHUP";    // 1    hangup
24*30fdc8d8SChris Lattner     case SIGINT:    return "SIGINT";    // 2    interrupt
25*30fdc8d8SChris Lattner     case SIGQUIT:   return "SIGQUIT";   // 3    quit
26*30fdc8d8SChris Lattner     case SIGILL:    return "SIGILL";    // 4    illegal instruction (not reset when caught)
27*30fdc8d8SChris Lattner     case SIGTRAP:   return "SIGTRAP";   // 5    trace trap (not reset when caught)
28*30fdc8d8SChris Lattner     case SIGABRT:   return "SIGABRT";   // 6    abort()
29*30fdc8d8SChris Lattner #if  defined(_POSIX_C_SOURCE)
30*30fdc8d8SChris Lattner     case SIGPOLL:   return "SIGPOLL";   // 7    pollable event ([XSR] generated, not supported)
31*30fdc8d8SChris Lattner #else    // !_POSIX_C_SOURCE
32*30fdc8d8SChris Lattner     case SIGEMT:    return "SIGEMT";    // 7    EMT instruction
33*30fdc8d8SChris Lattner #endif    // !_POSIX_C_SOURCE
34*30fdc8d8SChris Lattner     case SIGFPE:    return "SIGFPE";    // 8    floating point exception
35*30fdc8d8SChris Lattner     case SIGKILL:   return "SIGKILL";   // 9    kill (cannot be caught or ignored)
36*30fdc8d8SChris Lattner     case SIGBUS:    return "SIGBUS";    // 10    bus error
37*30fdc8d8SChris Lattner     case SIGSEGV:   return "SIGSEGV";   // 11    segmentation violation
38*30fdc8d8SChris Lattner     case SIGSYS:    return "SIGSYS";    // 12    bad argument to system call
39*30fdc8d8SChris Lattner     case SIGPIPE:   return "SIGPIPE";   // 13    write on a pipe with no one to read it
40*30fdc8d8SChris Lattner     case SIGALRM:   return "SIGALRM";   // 14    alarm clock
41*30fdc8d8SChris Lattner     case SIGTERM:   return "SIGTERM";   // 15    software termination signal from kill
42*30fdc8d8SChris Lattner     case SIGURG:    return "SIGURG";    // 16    urgent condition on IO channel
43*30fdc8d8SChris Lattner     case SIGSTOP:   return "SIGSTOP";   // 17    sendable stop signal not from tty
44*30fdc8d8SChris Lattner     case SIGTSTP:   return "SIGTSTP";   // 18    stop signal from tty
45*30fdc8d8SChris Lattner     case SIGCONT:   return "SIGCONT";   // 19    continue a stopped process
46*30fdc8d8SChris Lattner     case SIGCHLD:   return "SIGCHLD";   // 20    to parent on child stop or exit
47*30fdc8d8SChris Lattner     case SIGTTIN:   return "SIGTTIN";   // 21    to readers pgrp upon background tty read
48*30fdc8d8SChris Lattner     case SIGTTOU:   return "SIGTTOU";   // 22    like TTIN for output if (tp->t_local&LTOSTOP)
49*30fdc8d8SChris Lattner #if  !defined(_POSIX_C_SOURCE)
50*30fdc8d8SChris Lattner     case SIGIO:     return "SIGIO";     // 23    input/output possible signal
51*30fdc8d8SChris Lattner #endif
52*30fdc8d8SChris Lattner     case SIGXCPU:   return "SIGXCPU";   // 24    exceeded CPU time limit
53*30fdc8d8SChris Lattner     case SIGXFSZ:   return "SIGXFSZ";   // 25    exceeded file size limit
54*30fdc8d8SChris Lattner     case SIGVTALRM: return "SIGVTALRM"; // 26    virtual time alarm
55*30fdc8d8SChris Lattner     case SIGPROF:   return "SIGPROF";   // 27    profiling time alarm
56*30fdc8d8SChris Lattner #if  !defined(_POSIX_C_SOURCE)
57*30fdc8d8SChris Lattner     case SIGWINCH:  return "SIGWINCH";  // 28    window size changes
58*30fdc8d8SChris Lattner     case SIGINFO:   return "SIGINFO";   // 29    information request
59*30fdc8d8SChris Lattner #endif
60*30fdc8d8SChris Lattner     case SIGUSR1:   return "SIGUSR1";   // 30    user defined signal 1
61*30fdc8d8SChris Lattner     case SIGUSR2:   return "SIGUSR2";   // 31    user defined signal 2
62*30fdc8d8SChris Lattner     default:
63*30fdc8d8SChris Lattner         break;
64*30fdc8d8SChris Lattner     }
65*30fdc8d8SChris Lattner     return NULL;
66*30fdc8d8SChris Lattner }
67