124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SysSignal.cpp -------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//  Created by Greg Clayton on 6/18/07.
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "SysSignal.h"
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <signal.h>
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stddef.h>
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char *
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSysSignal::Name(int signal)
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    switch (signal)
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGHUP:    return "SIGHUP";    // 1    hangup
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGINT:    return "SIGINT";    // 2    interrupt
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGQUIT:   return "SIGQUIT";   // 3    quit
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGILL:    return "SIGILL";    // 4    illegal instruction (not reset when caught)
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGTRAP:   return "SIGTRAP";   // 5    trace trap (not reset when caught)
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGABRT:   return "SIGABRT";   // 6    abort()
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if  defined(_POSIX_C_SOURCE)
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGPOLL:   return "SIGPOLL";   // 7    pollable event ([XSR] generated, not supported)
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#else    // !_POSIX_C_SOURCE
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGEMT:    return "SIGEMT";    // 7    EMT instruction
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif    // !_POSIX_C_SOURCE
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGFPE:    return "SIGFPE";    // 8    floating point exception
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGKILL:   return "SIGKILL";   // 9    kill (cannot be caught or ignored)
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGBUS:    return "SIGBUS";    // 10    bus error
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGSEGV:   return "SIGSEGV";   // 11    segmentation violation
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGSYS:    return "SIGSYS";    // 12    bad argument to system call
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGPIPE:   return "SIGPIPE";   // 13    write on a pipe with no one to read it
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGALRM:   return "SIGALRM";   // 14    alarm clock
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGTERM:   return "SIGTERM";   // 15    software termination signal from kill
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGURG:    return "SIGURG";    // 16    urgent condition on IO channel
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGSTOP:   return "SIGSTOP";   // 17    sendable stop signal not from tty
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGTSTP:   return "SIGTSTP";   // 18    stop signal from tty
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGCONT:   return "SIGCONT";   // 19    continue a stopped process
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGCHLD:   return "SIGCHLD";   // 20    to parent on child stop or exit
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGTTIN:   return "SIGTTIN";   // 21    to readers pgrp upon background tty read
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGTTOU:   return "SIGTTOU";   // 22    like TTIN for output if (tp->t_local&LTOSTOP)
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if  !defined(_POSIX_C_SOURCE)
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGIO:     return "SIGIO";     // 23    input/output possible signal
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGXCPU:   return "SIGXCPU";   // 24    exceeded CPU time limit
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGXFSZ:   return "SIGXFSZ";   // 25    exceeded file size limit
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGVTALRM: return "SIGVTALRM"; // 26    virtual time alarm
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGPROF:   return "SIGPROF";   // 27    profiling time alarm
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if  !defined(_POSIX_C_SOURCE)
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGWINCH:  return "SIGWINCH";  // 28    window size changes
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGINFO:   return "SIGINFO";   // 29    information request
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGUSR1:   return "SIGUSR1";   // 30    user defined signal 1
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    case SIGUSR2:   return "SIGUSR2";   // 31    user defined signal 2
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    default:
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        break;
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    return NULL;
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
67