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 <csignal>
15#include <cstddef>
16
17const 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