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