/**
* Information in this module is taken from the GNU core-utils
* manual, process control section.
*
* http://www.gnu.org/manual/coreutils-4.5.4/coreutils.html
*/
module system/posix/signal
signature
constructors
Signal: String * Int * String -> Signal
UnknownSignal: Int -> Signal
strategies
// :: Int -> Signal
signal-from-number = ?i;
( <fetch-elem(?Signal(_, i, _))> AllSignals()
<+ !UnknownSignal(i))
// :: Signal -> Int
number-from-signal :
Signal(_, i, _) -> i
number-from-signal :
UnknownSignal(i) -> i
// :: Signal -> String
signal-to-descr :
Signal(n, i, s) -> <concat-strings> [n, " (", <int-to-string> i, "): ", s]
signal-to-descr :
UnknownSignal(i) -> <concat-strings> ["Unknown signal (", <int-to-string> i, ")"]
overlays
/**
* Table containing all signals.
*/
AllSignals =
[ SIGHUP(), SIGINT(), SIGQUIT(), SIGABRT(), SIGKILL(), SIGALRM(), SIGTERM()
, SIGBUS(), SIGCHLD(), SIGCONT(), SIGFPE(), SIGILL(), SIGPIPE(), SIGSEGV()
, SIGSTOP(), SIGTSTP(), SIGTTIN(), SIGTTOU(), SIGURG(), SIGUSR1(), SIGUSR2()
, SIGPOLL(), SIGPROF(), SIGSYS(), SIGTRAP(), SIGVTALRM(), SIGXCPU(), SIGXFSZ()
]
/**
* POSIX
*/
overlays
SIGHUP = Signal("HUP", 1, "Hangup")
SIGINT = Signal("INT", 2, "Terminal interrupt")
SIGQUIT = Signal("QUIT", 3, "Terminal quit")
SIGABRT = Signal("ABRT", 6, "Process abort")
SIGKILL = Signal("KILL", 9, "Kill")
SIGALRM = Signal("ALRM", 14, "Alarm Clock")
SIGTERM = Signal("TERM", 15, "Termination")
/**
* POSIX 1003.1-2001
*/
overlays
SIGBUS = Signal("BUS", 7, "Access to an undefined portion of a memory object")
SIGCHLD = Signal("CHLD", 17, "Child process terminated, stopped, or continued")
SIGCONT = Signal("CONT", 18, "Continue executing, if stopped")
SIGFPE = Signal("FPE", 8, "Erroneous arithmetic operation")
SIGILL = Signal("ILL", 4, "Illegal Instruction")
SIGPIPE = Signal("PIPE", 13, "Write on a pipe with no one to read it")
SIGSEGV = Signal("SEGV", 11, "Invalid memory reference")
SIGSTOP = Signal("STOP", 19, "Stop executing")
SIGTSTP = Signal("TSTP", 20, "Terminal stop")
SIGTTIN = Signal("TTIN", 21, "Background process attempting read")
SIGTTOU = Signal("TTOU", 22, "Background process attempting write")
SIGURG = Signal("URG", 23, "High bandwidth data is available at a socket")
SIGUSR1 = Signal("USR1", 10, "User-defined signal 1")
SIGUSR2 = Signal("USR2", 12, "User-defined signal 2")
/**
* POSIX 1003.1-2001, XSI extension
*/
overlays
SIGPOLL = Signal("POLL", 29, "Pollable event")
SIGPROF = Signal("PROF", 27, "Profiling timer expired")
SIGSYS = Signal("SYS", 31, "Bad system call")
SIGTRAP = Signal("TRAP", 5, "Trace/breakpoint trap")
SIGVTALRM = Signal("VTALRM", 26, "Virtual timer expired")
SIGXCPU = Signal("XCPU", 24, "CPU time limit exceeded")
SIGXFSZ = Signal("XFSZ", 25, "File size limit exceeded")