//===-- LinuxSignals.cpp ----------------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

// C++ Includes
// Other libraries and framework includes
// Project includes
#include "LinuxSignals.h"

using namespace lldb_private;

LinuxSignals::LinuxSignals()
    : UnixSignals()
{
    Reset();
}

void
LinuxSignals::Reset()
{
    m_signals.clear();

    AddSignal (1,    "SIGHUP",      "HUP",      false,   true , true , "hangup");
    AddSignal (2,    "SIGINT",      "INT",      true ,   true , true , "interrupt");
    AddSignal (3,    "SIGQUIT",     "QUIT",     false,   true , true , "quit");
    AddSignal (4,    "SIGILL",      "ILL",      false,   true , true , "illegal instruction");
    AddSignal (5,    "SIGTRAP",     "TRAP",     true ,   true , true , "trace trap (not reset when caught)");
    AddSignal (6,    "SIGABRT",     "ABRT",     false,   true , true , "abort()");
    AddSignal (6,    "SIGIOT",      "IOT",      false,   true , true , "IOT trap");
    AddSignal (7,    "SIGBUS",      "BUS",      false,   true , true , "bus error");
    AddSignal (8,    "SIGFPE",      "FPE",      false,   true , true , "floating point exception");
    AddSignal (9,    "SIGKILL",     "KILL",     false,   true , true , "kill");
    AddSignal (10,   "SIGUSR1",     "USR1",     false,   true , true , "user defined signal 1");
    AddSignal (11,   "SIGSEGV",     "SEGV",     false,   true , true , "segmentation violation");
    AddSignal (12,   "SIGUSR2",     "USR2",     false,   true , true , "user defined signal 2");
    AddSignal (13,   "SIGPIPE",     "PIPE",     false,   true , true , "write to pipe with reading end closed");
    AddSignal (14,   "SIGALRM",     "ALRM",     false,   false, false, "alarm");
    AddSignal (15,   "SIGTERM",     "TERM",     false,   true , true , "termination requested");
    AddSignal (16,   "SIGSTKFLT",   "STKFLT",   false,   true , true , "stack fault");
    AddSignal (16,   "SIGCLD",      "CLD",      false,   false, true , "same as SIGCHLD");
    AddSignal (17,   "SIGCHLD",     "CHLD",     false,   false, true , "child status has changed");
    AddSignal (18,   "SIGCONT",     "CONT",     false,   true , true , "process continue");
    AddSignal (19,   "SIGSTOP",     "STOP",     true ,   true , true , "process stop");
    AddSignal (20,   "SIGTSTP",     "TSTP",     false,   true , true , "tty stop");
    AddSignal (21,   "SIGTTIN",     "TTIN",     false,   true , true , "background tty read");
    AddSignal (22,   "SIGTTOU",     "TTOU",     false,   true , true , "background tty write");
    AddSignal (23,   "SIGURG",      "URG",      false,   true , true , "urgent data on socket");
    AddSignal (24,   "SIGXCPU",     "XCPU",     false,   true , true , "CPU resource exceeded");
    AddSignal (25,   "SIGXFSZ",     "XFSZ",     false,   true , true , "file size limit exceeded");
    AddSignal (26,   "SIGVTALRM",   "VTALRM",   false,   true , true , "virtual time alarm");
    AddSignal (27,   "SIGPROF",     "PROF",     false,   false, false, "profiling time alarm");
    AddSignal (28,   "SIGWINCH",    "WINCH",    false,   true , true , "window size changes");
    AddSignal (29,   "SIGPOLL",     "POLL",     false,   true , true , "pollable event");
    AddSignal (29,   "SIGIO",       "IO",       false,   true , true , "input/output ready");
    AddSignal (30,   "SIGPWR",      "PWR",      false,   true , true , "power failure");
    AddSignal (31,   "SIGSYS",      "SYS",      false,   true , true , "invalid system call");
    AddSignal (32,   "SIG32",       "SIG32",    false,   true , true , "threading library internal signal 1");
    AddSignal (33,   "SIG33",       "SIG33",    false,   true , true , "threading library internal signal 2");
    AddSignal (34,   "SIGRTMIN",    "RTMIN",    false,   true , true , "real time signal 0");
    AddSignal (35,   "SIGRTMIN+1",  "RTMIN+1",  false,   true , true , "real time signal 1");
    AddSignal (36,   "SIGRTMIN+2",  "RTMIN+2",  false,   true , true , "real time signal 2");
    AddSignal (37,   "SIGRTMIN+3",  "RTMIN+3",  false,   true , true , "real time signal 3");
    AddSignal (38,   "SIGRTMIN+4",  "RTMIN+4",  false,   true , true , "real time signal 4");
    AddSignal (39,   "SIGRTMIN+5",  "RTMIN+5",  false,   true , true , "real time signal 5");
    AddSignal (40,   "SIGRTMIN+6",  "RTMIN+6",  false,   true , true , "real time signal 6");
    AddSignal (41,   "SIGRTMIN+7",  "RTMIN+7",  false,   true , true , "real time signal 7");
    AddSignal (42,   "SIGRTMIN+8",  "RTMIN+8",  false,   true , true , "real time signal 8");
    AddSignal (43,   "SIGRTMIN+9",  "RTMIN+9",  false,   true , true , "real time signal 9");
    AddSignal (44,   "SIGRTMIN+10", "RTMIN+10", false,   true , true , "real time signal 10");
    AddSignal (45,   "SIGRTMIN+11", "RTMIN+11", false,   true , true , "real time signal 11");
    AddSignal (46,   "SIGRTMIN+12", "RTMIN+12", false,   true , true , "real time signal 12");
    AddSignal (47,   "SIGRTMIN+13", "RTMIN+13", false,   true , true , "real time signal 13");
    AddSignal (48,   "SIGRTMIN+14", "RTMIN+14", false,   true , true , "real time signal 14");
    AddSignal (49,   "SIGRTMIN+15", "RTMIN+15", false,   true , true , "real time signal 15");
    AddSignal (50,   "SIGRTMAX-14", "RTMAX-14", false,   true , true , "real time signal 16"); // switching to SIGRTMAX-xxx to match "kill -l" output
    AddSignal (51,   "SIGRTMAX-13", "RTMAX-13", false,   true , true , "real time signal 17");
    AddSignal (52,   "SIGRTMAX-12", "RTMAX-12", false,   true , true , "real time signal 18");
    AddSignal (53,   "SIGRTMAX-11", "RTMAX-11", false,   true , true , "real time signal 19");
    AddSignal (54,   "SIGRTMAX-10", "RTMAX-10", false,   true , true , "real time signal 20");
    AddSignal (55,   "SIGRTMAX-9",  "RTMAX-9",  false,   true , true , "real time signal 21");
    AddSignal (56,   "SIGRTMAX-8",  "RTMAX-8",  false,   true , true , "real time signal 22");
    AddSignal (57,   "SIGRTMAX-7",  "RTMAX-7",  false,   true , true , "real time signal 23");
    AddSignal (58,   "SIGRTMAX-6",  "RTMAX-6",  false,   true , true , "real time signal 24");
    AddSignal (59,   "SIGRTMAX-5",  "RTMAX-5",  false,   true , true , "real time signal 25");
    AddSignal (60,   "SIGRTMAX-4",  "RTMAX-4",  false,   true , true , "real time signal 26");
    AddSignal (61,   "SIGRTMAX-3",  "RTMAX-3",  false,   true , true , "real time signal 27");
    AddSignal (62,   "SIGRTMAX-2",  "RTMAX-2",  false,   true , true , "real time signal 28");
    AddSignal (63,   "SIGRTMAX-1",  "RTMAX-1",  false,   true , true , "real time signal 29");
    AddSignal (64,   "SIGRTMAX",    "RTMAX",    false,   true , true , "real time signal 30");
}
