diff options
Diffstat (limited to 'include/asm-generic/siginfo.h')
| -rw-r--r-- | include/asm-generic/siginfo.h | 36 | 
1 files changed, 33 insertions, 3 deletions
diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 0dd4e87f6fb..8ed67779fc0 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h @@ -35,6 +35,14 @@ typedef union sigval {  #define __ARCH_SI_BAND_T long  #endif +#ifndef __ARCH_SI_CLOCK_T +#define __ARCH_SI_CLOCK_T __kernel_clock_t +#endif + +#ifndef __ARCH_SI_ATTRIBUTES +#define __ARCH_SI_ATTRIBUTES +#endif +  #ifndef HAVE_ARCH_SIGINFO_T  typedef struct siginfo { @@ -72,8 +80,8 @@ typedef struct siginfo {  			__kernel_pid_t _pid;	/* which child */  			__ARCH_SI_UID_T _uid;	/* sender's uid */  			int _status;		/* exit code */ -			__kernel_clock_t _utime; -			__kernel_clock_t _stime; +			__ARCH_SI_CLOCK_T _utime; +			__ARCH_SI_CLOCK_T _stime;  		} _sigchld;  		/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ @@ -90,9 +98,18 @@ typedef struct siginfo {  			__ARCH_SI_BAND_T _band;	/* POLL_IN, POLL_OUT, POLL_MSG */  			int _fd;  		} _sigpoll; + +		/* SIGSYS */ +		struct { +			void __user *_call_addr; /* calling user insn */ +			int _syscall;	/* triggering system call number */ +			unsigned int _arch;	/* AUDIT_ARCH_* of syscall */ +		} _sigsys;  	} _sifields; -} siginfo_t; +} __ARCH_SI_ATTRIBUTES siginfo_t; +/* If the arch shares siginfo, then it has SIGSYS. */ +#define __ARCH_SIGSYS  #endif  /* @@ -116,6 +133,11 @@ typedef struct siginfo {  #define si_addr_lsb	_sifields._sigfault._addr_lsb  #define si_band		_sifields._sigpoll._band  #define si_fd		_sifields._sigpoll._fd +#ifdef __ARCH_SIGSYS +#define si_call_addr	_sifields._sigsys._call_addr +#define si_syscall	_sifields._sigsys._syscall +#define si_arch		_sifields._sigsys._arch +#endif  #ifdef __KERNEL__  #define __SI_MASK	0xffff0000u @@ -126,6 +148,7 @@ typedef struct siginfo {  #define __SI_CHLD	(4 << 16)  #define __SI_RT		(5 << 16)  #define __SI_MESGQ	(6 << 16) +#define __SI_SYS	(7 << 16)  #define __SI_CODE(T,N)	((T) | ((N) & 0xffff))  #else  #define __SI_KILL	0 @@ -135,6 +158,7 @@ typedef struct siginfo {  #define __SI_CHLD	0  #define __SI_RT		0  #define __SI_MESGQ	0 +#define __SI_SYS	0  #define __SI_CODE(T,N)	(N)  #endif @@ -232,6 +256,12 @@ typedef struct siginfo {  #define NSIGPOLL	6  /* + * SIGSYS si_codes + */ +#define SYS_SECCOMP		(__SI_SYS|1)	/* seccomp triggered */ +#define NSIGSYS	1 + +/*   * sigevent definitions   *    * It seems likely that SIGEV_THREAD will have to be handled from   |