Home | History | Annotate | Download | only in asm-arm
      1 #ifndef _ASMARM_SIGNAL_H
      2 #define _ASMARM_SIGNAL_H
      3 
      4 #include <linux/types.h>
      5 
      6 /* Avoid too many header ordering problems.  */
      7 struct siginfo;
      8 
      9 #ifdef __KERNEL__
     10 /* Most things should be clean enough to redefine this at will, if care
     11    is taken to make libc match.  */
     12 
     13 #define _NSIG		64
     14 #define _NSIG_BPW	32
     15 #define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
     16 
     17 typedef unsigned long old_sigset_t;		/* at least 32 bits */
     18 
     19 typedef struct {
     20 	unsigned long sig[_NSIG_WORDS];
     21 } sigset_t;
     22 
     23 #else
     24 /* Here we must cater to libcs that poke about in kernel headers.  */
     25 
     26 #define NSIG		32
     27 typedef unsigned long sigset_t;
     28 
     29 #endif /* __KERNEL__ */
     30 
     31 #define SIGHUP		 1
     32 #define SIGINT		 2
     33 #define SIGQUIT		 3
     34 #define SIGILL		 4
     35 #define SIGTRAP		 5
     36 #define SIGABRT		 6
     37 #define SIGIOT		 6
     38 #define SIGBUS		 7
     39 #define SIGFPE		 8
     40 #define SIGKILL		 9
     41 #define SIGUSR1		10
     42 #define SIGSEGV		11
     43 #define SIGUSR2		12
     44 #define SIGPIPE		13
     45 #define SIGALRM		14
     46 #define SIGTERM		15
     47 #define SIGSTKFLT	16
     48 #define SIGCHLD		17
     49 #define SIGCONT		18
     50 #define SIGSTOP		19
     51 #define SIGTSTP		20
     52 #define SIGTTIN		21
     53 #define SIGTTOU		22
     54 #define SIGURG		23
     55 #define SIGXCPU		24
     56 #define SIGXFSZ		25
     57 #define SIGVTALRM	26
     58 #define SIGPROF		27
     59 #define SIGWINCH	28
     60 #define SIGIO		29
     61 #define SIGPOLL		SIGIO
     62 /*
     63 #define SIGLOST		29
     64 */
     65 #define SIGPWR		30
     66 #define SIGSYS		31
     67 #define	SIGUNUSED	31
     68 
     69 /* These should not be considered constants from userland.  */
     70 #define SIGRTMIN	32
     71 #define SIGRTMAX	_NSIG
     72 
     73 #define SIGSWI		32
     74 
     75 /*
     76  * SA_FLAGS values:
     77  *
     78  * SA_NOCLDSTOP		flag to turn off SIGCHLD when children stop.
     79  * SA_NOCLDWAIT		flag on SIGCHLD to inhibit zombies.
     80  * SA_SIGINFO		deliver the signal with SIGINFO structs
     81  * SA_THIRTYTWO		delivers the signal in 32-bit mode, even if the task
     82  *			is running in 26-bit.
     83  * SA_ONSTACK		allows alternate signal stacks (see sigaltstack(2)).
     84  * SA_RESTART		flag to get restarting signals (which were the default long ago)
     85  * SA_NODEFER		prevents the current signal from being masked in the handler.
     86  * SA_RESETHAND		clears the handler when the signal is delivered.
     87  *
     88  * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
     89  * Unix names RESETHAND and NODEFER respectively.
     90  */
     91 #define SA_NOCLDSTOP	0x00000001
     92 #define SA_NOCLDWAIT	0x00000002
     93 #define SA_SIGINFO	0x00000004
     94 #define SA_THIRTYTWO	0x02000000
     95 #define SA_RESTORER	0x04000000
     96 #define SA_ONSTACK	0x08000000
     97 #define SA_RESTART	0x10000000
     98 #define SA_NODEFER	0x40000000
     99 #define SA_RESETHAND	0x80000000
    100 
    101 #define SA_NOMASK	SA_NODEFER
    102 #define SA_ONESHOT	SA_RESETHAND
    103 
    104 
    105 /*
    106  * sigaltstack controls
    107  */
    108 #define SS_ONSTACK	1
    109 #define SS_DISABLE	2
    110 
    111 #define MINSIGSTKSZ	2048
    112 #define SIGSTKSZ	8192
    113 
    114 #include <asm-generic/signal.h>
    115 
    116 #ifdef __KERNEL__
    117 struct old_sigaction {
    118 	__sighandler_t sa_handler;
    119 	old_sigset_t sa_mask;
    120 	unsigned long sa_flags;
    121 	__sigrestore_t sa_restorer;
    122 };
    123 
    124 struct sigaction {
    125 	__sighandler_t sa_handler;
    126 	unsigned long sa_flags;
    127 	__sigrestore_t sa_restorer;
    128 	sigset_t sa_mask;		/* mask last for extensibility */
    129 };
    130 
    131 struct k_sigaction {
    132 	struct sigaction sa;
    133 };
    134 
    135 #else
    136 /* Here we must cater to libcs that poke about in kernel headers.  */
    137 
    138 struct sigaction {
    139 	union {
    140 	  __sighandler_t _sa_handler;
    141 	  void (*_sa_sigaction)(int, struct siginfo *, void *);
    142 	} _u;
    143 	sigset_t sa_mask;
    144 	unsigned long sa_flags;
    145 	void (*sa_restorer)(void);
    146 };
    147 
    148 #define sa_handler	_u._sa_handler
    149 #define sa_sigaction	_u._sa_sigaction
    150 
    151 #endif /* __KERNEL__ */
    152 
    153 typedef struct sigaltstack {
    154 	void __user *ss_sp;
    155 	int ss_flags;
    156 	size_t ss_size;
    157 } stack_t;
    158 
    159 #ifdef __KERNEL__
    160 #include <asm/sigcontext.h>
    161 #define ptrace_signal_deliver(regs, cookie) do { } while (0)
    162 #endif
    163 
    164 #endif
    165