typedef unsigned long sigset_t;
/* Służy do zapamiętania zbioru sygnałów - każdemu sygnałowi będzie
odpowiadał bit o odpowiadającym mu numerze */ #define _NSIG
32
#define NSIG
_NSIG
/* liczba sygnałów */
#define SIGHUP
1
#define SIGINT
2
#define SIGQUIT
3
#define SIGILL
4
#define SIGTRAP
5
#define SIGABRT
6
#define SIGIOT
6
#define SIGBUS
7
#define SIGFPE
8
#define SIGKILL
9
#define SIGUSR1
10
#define SIGSEGV
11
#define SIGUSR2
12
#define SIGPIPE
13
#define SIGALRM
14
#define SIGTERM
15
#define SIGSTKFLT
16
#define SIGCHLD
17
#define SIGCONT
18
#define SIGSTOP
19
#define SIGTSTP
20
#define SIGTTIN
21
#define SIGTTOU
22
#define SIGURG
23
#define SIGXCPU
24
#define SIGXFSZ
25
#define SIGVTALRM
26
#define SIGPROF
27
#define SIGWINCH
28
#define SIGIO
29
#define SIGPOLL
SIGIO
#define SIGPWR
30
#define SIGUNUSED
31
/* nazwy i numery sygnałów */
/* Flagi decydujące o sposobie obsługi przerwania: */
#define SA_NOCLDSTOP
1
/* decyduje czy zawiadamiać rodzica o zatrzymaniu procesu */
#define SA_SHIRQ
0x04000000
/* dla przerwań dzielonych przez PCI i EISA */
#define SA_STACK
0x08000000
/* na razie nie jest używana, ale w przyszłości ma pozwolić na używanie
osobnego stosu przez funkcje obsługi sygnału - na stos ten ma wskazywać
pole sa_restorer z sigaction */
#define SA_RESTART
0x10000000
/* flaga do restartu funkcji systemowej przerwanej nadejściem i obsługą
sygnału */
#define SA_INTERRUPT
0x20000000
/* używana wewnętrznie przez system w przypadku handlerów przerwań
sprzętowych */
#define SA_NOMASK
0x40000000
/* po wywołaniu funkcji obsługi przerwania następne sygnały nie są
maskowane */
#define SA_ONESHOT
0x80000000
/* po wywolaniu funkcji obsługi sygnału, ale przed rozpoczęciem jej
wykonywania pole wskazujące na handlera w sigaction jest ustawiane na obsługę
domyślną */
#ifdef __KERNEL__
#define SA_PROBE
SA_ONESHOT
#define SA_SAMPLE_RANDOM
SA_RESTART
/* flagi używane tylko przez jądro */
#endif
#define SIG_BLOCK
0
/* wskazuje, że sygnał jest blokowany */
#define SIG_UNBLOCK
1
/* nieblokowany sygnał */
#define SIG_SETMASK
2
/* używana przy ustawianiu maski sygnałów */
typedef void (*__sighandler_t)(int);
/* definicja typu funkcji obsługi sygnału */
#define SIG_DFL ((__sighandler_t)0)
/* domyślna obsługa sygnału */
#define SIG_IGN ((__sighandler_t)1)
/* sygnał ma być ignorowany */
#define SIG_ERR ((__sighandler_t)-1)
/* błąd zwracany przy powrocie z obsługi sygnału */
/* struktura zawierająca informacje jak ma być obsłużony dany sygnał
*/
struct sigaction {
__sighandler_t sa_handler;
/* adres funkcji obslugi sygnału */
sigset_t sa_mask;
/* maska sygnałów blokowanych - standard Posix wymaga, aby podczas
wywolywania funkcji obsługi sygnału mogła być ustawiona inna maska blokowania
sygnałów niż mormalnie w procesie; to pole pozwala odtworzyć oryginalną
wartość */
unsigned long sa_flags;
/* któraś z opisanych wcześniej flag */
void (*sa_restorer)(void);
/* nie używane pole - w przyszłości ma wskazywać na osobny stos używany
przez funkcję obslugi sygnału */ };
#ifdef __KERNEL__
#include <asm/sigcontext.h>
/* implementacja struktur związanych z zapamiętywaniem stanu rejestrów
systemowych - używana tylko przez jądro */
#endif
#endif
Opisał: Piotr Leśniewski