xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/bits/sigaction.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* The proper definitions for Linux/MIPS's sigaction.
2*53ee8cc1Swenshuai.xi    Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2003
3*53ee8cc1Swenshuai.xi 	Free Software Foundation, Inc.
4*53ee8cc1Swenshuai.xi    This file is part of the GNU C Library.
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi    The GNU C Library is free software; you can redistribute it and/or
7*53ee8cc1Swenshuai.xi    modify it under the terms of the GNU Lesser General Public
8*53ee8cc1Swenshuai.xi    License as published by the Free Software Foundation; either
9*53ee8cc1Swenshuai.xi    version 2.1 of the License, or (at your option) any later version.
10*53ee8cc1Swenshuai.xi 
11*53ee8cc1Swenshuai.xi    The GNU C Library is distributed in the hope that it will be useful,
12*53ee8cc1Swenshuai.xi    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*53ee8cc1Swenshuai.xi    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14*53ee8cc1Swenshuai.xi    Lesser General Public License for more details.
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi    You should have received a copy of the GNU Lesser General Public
17*53ee8cc1Swenshuai.xi    License along with the GNU C Library; if not, write to the Free
18*53ee8cc1Swenshuai.xi    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19*53ee8cc1Swenshuai.xi    02111-1307 USA.  */
20*53ee8cc1Swenshuai.xi 
21*53ee8cc1Swenshuai.xi #ifndef _SIGNAL_H
22*53ee8cc1Swenshuai.xi # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
23*53ee8cc1Swenshuai.xi #endif
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi /* Structure describing the action to be taken when a signal arrives.  */
26*53ee8cc1Swenshuai.xi struct sigaction
27*53ee8cc1Swenshuai.xi   {
28*53ee8cc1Swenshuai.xi     /* Special flags.  */
29*53ee8cc1Swenshuai.xi     unsigned int sa_flags;
30*53ee8cc1Swenshuai.xi 
31*53ee8cc1Swenshuai.xi     /* Signal handler.  */
32*53ee8cc1Swenshuai.xi #ifdef __USE_POSIX199309
33*53ee8cc1Swenshuai.xi     union
34*53ee8cc1Swenshuai.xi       {
35*53ee8cc1Swenshuai.xi 	/* Used if SA_SIGINFO is not set.  */
36*53ee8cc1Swenshuai.xi 	__sighandler_t sa_handler;
37*53ee8cc1Swenshuai.xi 	/* Used if SA_SIGINFO is set.  */
38*53ee8cc1Swenshuai.xi 	void (*sa_sigaction) (int, siginfo_t *, void *);
39*53ee8cc1Swenshuai.xi       }
40*53ee8cc1Swenshuai.xi     __sigaction_handler;
41*53ee8cc1Swenshuai.xi # define sa_handler    __sigaction_handler.sa_handler
42*53ee8cc1Swenshuai.xi # define sa_sigaction  __sigaction_handler.sa_sigaction
43*53ee8cc1Swenshuai.xi #else
44*53ee8cc1Swenshuai.xi     __sighandler_t sa_handler;
45*53ee8cc1Swenshuai.xi #endif
46*53ee8cc1Swenshuai.xi     /* Additional set of signals to be blocked.  */
47*53ee8cc1Swenshuai.xi     __sigset_t sa_mask;
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi     /* The ABI says here are two unused ints following. */
50*53ee8cc1Swenshuai.xi     /* Restore handler.  */
51*53ee8cc1Swenshuai.xi     void (*sa_restorer) (void);
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi #if _MIPS_SZPTR < 64
54*53ee8cc1Swenshuai.xi     int sa_resv[1];
55*53ee8cc1Swenshuai.xi #endif
56*53ee8cc1Swenshuai.xi   };
57*53ee8cc1Swenshuai.xi 
58*53ee8cc1Swenshuai.xi /* Bits in `sa_flags'.  */
59*53ee8cc1Swenshuai.xi /* Please note that some Linux kernels versions use different values for these
60*53ee8cc1Swenshuai.xi    flags which is a bug in those kernel versions.  */
61*53ee8cc1Swenshuai.xi #define SA_NOCLDSTOP  0x00000001 /* Don't send SIGCHLD when children stop.  */
62*53ee8cc1Swenshuai.xi #define SA_NOCLDWAIT  0x00010000 /* Don't create zombie on child death.  */
63*53ee8cc1Swenshuai.xi #define SA_SIGINFO    0x00000008 /* Invoke signal-catching function with
64*53ee8cc1Swenshuai.xi 				    three arguments instead of one.  */
65*53ee8cc1Swenshuai.xi #if defined __USE_UNIX98 || defined __USE_MISC
66*53ee8cc1Swenshuai.xi # define SA_ONSTACK   0x08000000 /* Use signal stack by using `sa_restorer'. */
67*53ee8cc1Swenshuai.xi # define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler.  */
68*53ee8cc1Swenshuai.xi # define SA_RESTART   0x10000000 /* Restart syscall on signal return.  */
69*53ee8cc1Swenshuai.xi # define SA_NODEFER   0x40000000 /* Don't automatically block the signal when
70*53ee8cc1Swenshuai.xi 				    its handler is being executed.  */
71*53ee8cc1Swenshuai.xi #endif
72*53ee8cc1Swenshuai.xi #ifdef __USE_MISC
73*53ee8cc1Swenshuai.xi # define SA_INTERRUPT 0x20000000 /* Historical no-op.  */
74*53ee8cc1Swenshuai.xi 
75*53ee8cc1Swenshuai.xi /* Some aliases for the SA_ constants.  */
76*53ee8cc1Swenshuai.xi # define SA_NOMASK    SA_NODEFER
77*53ee8cc1Swenshuai.xi # define SA_ONESHOT   SA_RESETHAND
78*53ee8cc1Swenshuai.xi # define SA_STACK     SA_ONSTACK
79*53ee8cc1Swenshuai.xi #endif
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi /* Values for the HOW argument to `sigprocmask'.  */
82*53ee8cc1Swenshuai.xi #define SIG_NOP	      0		/* 0 is unused to catch errors */
83*53ee8cc1Swenshuai.xi #define	SIG_BLOCK     1		/* Block signals.  */
84*53ee8cc1Swenshuai.xi #define	SIG_UNBLOCK   2		/* Unblock signals.  */
85*53ee8cc1Swenshuai.xi #define	SIG_SETMASK   3		/* Set the set of blocked signals.  */
86*53ee8cc1Swenshuai.xi #ifdef __USE_MISC
87*53ee8cc1Swenshuai.xi # define SIG_SETMASK32 256	/* Goodie from SGI for BSD compatibility:
88*53ee8cc1Swenshuai.xi 				   set only the low 32 bit of the sigset.  */
89*53ee8cc1Swenshuai.xi #endif
90