Blame | Last modification | View Log | RSS feed
#pragma force_top_level#pragma include_only_once/* signal.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.7 *//* Copyright (C) Codemist Ltd., 1988-1993. *//* Copyright (C) Advanced Risc Machines Ltd., 1991-1993. *//* version 0.03 *//** signal.h declares a type and two functions and defines several macros, for* handling various signals (conditions that may be reported during program* execution).*/#ifndef __signal_h#define __signal_h#ifdef __cplusplusextern "C" {#endiftypedef int sig_atomic_t;/* type which is the integral type of an object that can be modified as *//* an atomic entity, even in the presence of asynchronous interrupts. */extern void __SIG_DFL(int);extern void __SIG_ERR(int);extern void __SIG_IGN(int);/** Each of the following macros expand to a constant expression with a* distinct value and has the same type as the second argument to, and the* return value of the signal function, and whose value compares unequal to* the address of any declarable function.*/#define SIG_DFL &__SIG_DFL#define SIG_ERR &__SIG_ERR#define SIG_IGN &__SIG_IGN/** Each of the following macros expand to a positive integral constant* expression that is the signal number corresponding the the specified* condition.*/#define SIGABRT 1 /* abort */#define SIGFPE 2 /* arithmetic exception */#define SIGILL 3 /* illegal instruction */#define SIGINT 4 /* attention request from user */#define SIGSEGV 5 /* bad memory access */#define SIGTERM 6 /* termination request */#define SIGSTAK 7 /* stack overflow *//* (these following macros are not part of the ANSI standard,* but private to this implementation*//* Signal numbers 8 and 9 are available for the user */#define SIGUSR1 8#define SIGUSR2 9#define SIGOSERROR 10extern void (*signal (int /*sig*/, void (* /*func*/ )(int)))(int);/** Chooses one of three ways in which receipt of the signal number sig is to* be subsequently handled. If the value of func is SIG_DFL, default* handling for that signal will occur. If the value of func is SIG_IGN, the* signal will be ignored. Otherwise func shall point to a function to be* called when that signal occurs.* When a signal occurs, if func points to a function, first the equivalent* of signal(sig, SIG_DFL); is executed. (If the value of sig is SIGILL,* whether the reset to SIG_DFL occurs is implementation-defined (under* RISCOS/Arthur/Brazil the reset does occur)). Next the equivalent of* (*func)(sig); is executed. The function may terminate by calling the* abort, exit or longjmp function. If func executes a return statement and* the value of sig was SIGFPE or any other implementation-defined value* corresponding to a computational exception, the behaviour is undefined.* Otherwise, the program will resume execution at the point it was* interrupted.* If the signal occurs other than as a result of calling the abort or raise* function, the behaviour is undefined if the signal handler calls any* function in the standard library other than the signal function itself* or refers to any object with static storage duration other than by* assigning a value to a volatile static variable of type sig_atomic_t.* At program startup, the equivalent of signal(sig, SIG_IGN); may be* executed for some signals selected in an implementation-defined manner* (under RISCOS/Arthur/Brazil this does not occur); the equivalent of* signal(sig, SIG_DFL); is executed for all other signals defined by the* implementation.* Returns: If the request can be honoured, the signal function returns the* value of func for most recent call to signal for the specified* signal sig. Otherwise, a value of SIG_ERR is returned and the* integer expression errno is set to indicate the error.*/extern int raise(int /*sig*/);/* sends the signal sig to the executing program. *//* Returns: zero if successful, non-zero if unsuccessful. */#ifdef __cplusplus}#endif#endif/* end of signal.h */