#ifndef _ASMi386_SIGNAL_H
#define _ASMi386_SIGNAL_H
 

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