holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/signal.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 /* 
       
     2  * signal.h
       
     3  * This file has no copyright assigned and is placed in the Public Domain.
       
     4  * This file is a part of the mingw-runtime package.
       
     5  * No warranty is given; refer to the file DISCLAIMER within the package.
       
     6  *
       
     7  * A way to set handlers for exceptional conditions (also known as signals).
       
     8  *
       
     9  */
       
    10 
       
    11 #ifndef	_SIGNAL_H_
       
    12 #define	_SIGNAL_H_
       
    13 
       
    14 /* All the headers include this file. */
       
    15 #include <_mingw.h>
       
    16 
       
    17 /*
       
    18  * The actual signal values. Using other values with signal
       
    19  * produces a SIG_ERR return value.
       
    20  *
       
    21  * NOTE: SIGINT is produced when the user presses Ctrl-C.
       
    22  *       SIGILL has not been tested.
       
    23  *       SIGFPE doesn't seem to work?
       
    24  *       SIGSEGV does not catch writing to a NULL pointer (that shuts down
       
    25  *               your app; can you say "segmentation violation core dump"?).
       
    26  *       SIGTERM comes from what kind of termination request exactly?
       
    27  *       SIGBREAK is indeed produced by pressing Ctrl-Break.
       
    28  *       SIGABRT is produced by calling abort.
       
    29  * TODO: The above results may be related to not installing an appropriate
       
    30  *       structured exception handling frame. Results may be better if I ever
       
    31  *       manage to get the SEH stuff down.
       
    32  */
       
    33 #define	SIGINT		2	/* Interactive attention */
       
    34 #define	SIGILL		4	/* Illegal instruction */
       
    35 #define	SIGFPE		8	/* Floating point error */
       
    36 #define	SIGSEGV		11	/* Segmentation violation */
       
    37 #define	SIGTERM		15	/* Termination request */
       
    38 #define SIGBREAK	21	/* Control-break */
       
    39 #define	SIGABRT		22	/* Abnormal termination (abort) */
       
    40 
       
    41 #define NSIG 23     /* maximum signal number + 1 */
       
    42 
       
    43 #ifndef	RC_INVOKED
       
    44 
       
    45 #ifndef _SIG_ATOMIC_T_DEFINED
       
    46 typedef int sig_atomic_t;
       
    47 #define _SIG_ATOMIC_T_DEFINED
       
    48 #endif
       
    49 
       
    50 /*
       
    51  * The prototypes (below) are the easy part. The hard part is figuring
       
    52  * out what signals are available and what numbers they are assigned
       
    53  * along with appropriate values of SIG_DFL and SIG_IGN.
       
    54  */
       
    55 
       
    56 /*
       
    57  * A pointer to a signal handler function. A signal handler takes a
       
    58  * single int, which is the signal it handles.
       
    59  */
       
    60 typedef	void (*__p_sig_fn_t)(int);
       
    61 
       
    62 /*
       
    63  * These are special values of signal handler pointers which are
       
    64  * used to send a signal to the default handler (SIG_DFL), ignore
       
    65  * the signal (SIG_IGN), indicate an error return (SIG_ERR),
       
    66  * get an error (SIG_SGE), or acknowledge (SIG_ACK).
       
    67  */
       
    68 #define	SIG_DFL	((__p_sig_fn_t) 0)
       
    69 #define	SIG_IGN	((__p_sig_fn_t) 1)
       
    70 #define	SIG_ERR ((__p_sig_fn_t) -1)
       
    71 #define SIG_SGE ((__p_sig_fn_t) 3)
       
    72 #define SIG_ACK ((__p_sig_fn_t) 4)
       
    73 
       
    74 #ifdef	__cplusplus
       
    75 extern "C" {
       
    76 #endif
       
    77 
       
    78 /*
       
    79  * Call signal to set the signal handler for signal sig to the
       
    80  * function pointed to by handler. Returns a pointer to the
       
    81  * previous handler, or SIG_ERR if an error occurs. Initially
       
    82  * unhandled signals defined above will return SIG_DFL.
       
    83  */
       
    84 _CRTIMP __p_sig_fn_t __cdecl __MINGW_NOTHROW	signal(int, __p_sig_fn_t);
       
    85 
       
    86 /*
       
    87  * Raise the signal indicated by sig. Returns non-zero on success.
       
    88  */
       
    89 _CRTIMP int __cdecl __MINGW_NOTHROW	raise (int);
       
    90 
       
    91 #ifdef	__cplusplus
       
    92 }
       
    93 #endif
       
    94 
       
    95 #endif	/* Not RC_INVOKED */
       
    96 
       
    97 #endif	/* Not _SIGNAL_H_ */
       
    98