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