Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
siginfo.h
Go to the documentation of this file.
1 /*
2  * Based on <asm-i386/siginfo.h>.
3  *
4  * Modified 1998-2002
5  * David Mosberger-Tang <[email protected]>, Hewlett-Packard Co
6  */
7 #ifndef _UAPI_ASM_IA64_SIGINFO_H
8 #define _UAPI_ASM_IA64_SIGINFO_H
9 
10 
11 #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
12 
13 #define HAVE_ARCH_SIGINFO_T
14 #define HAVE_ARCH_COPY_SIGINFO
15 #define HAVE_ARCH_COPY_SIGINFO_TO_USER
16 
17 #include <asm-generic/siginfo.h>
18 
19 typedef struct siginfo {
20  int si_signo;
21  int si_errno;
22  int si_code;
23  int __pad0;
24 
25  union {
27 
28  /* kill() */
29  struct {
30  pid_t _pid; /* sender's pid */
31  uid_t _uid; /* sender's uid */
32  } _kill;
33 
34  /* POSIX.1b timers */
35  struct {
36  timer_t _tid; /* timer id */
37  int _overrun; /* overrun count */
38  char _pad[sizeof(__ARCH_SI_UID_T) - sizeof(int)];
39  sigval_t _sigval; /* must overlay ._rt._sigval! */
40  int _sys_private; /* not to be passed to user */
41  } _timer;
42 
43  /* POSIX.1b signals */
44  struct {
45  pid_t _pid; /* sender's pid */
46  uid_t _uid; /* sender's uid */
48  } _rt;
49 
50  /* SIGCHLD */
51  struct {
52  pid_t _pid; /* which child */
53  uid_t _uid; /* sender's uid */
54  int _status; /* exit code */
57  } _sigchld;
58 
59  /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
60  struct {
61  void __user *_addr; /* faulting insn/memory ref. */
62  int _imm; /* immediate value for "break" */
63  unsigned int _flags; /* see below */
64  unsigned long _isr; /* isr */
65  short _addr_lsb; /* lsb of faulting address */
66  } _sigfault;
67 
68  /* SIGPOLL */
69  struct {
70  long _band; /* POLL_IN, POLL_OUT, POLL_MSG (XPG requires a "long") */
71  int _fd;
72  } _sigpoll;
73  } _sifields;
74 } siginfo_t;
75 
76 #define si_imm _sifields._sigfault._imm /* as per UNIX SysV ABI spec */
77 #define si_flags _sifields._sigfault._flags
78 /*
79  * si_isr is valid for SIGILL, SIGFPE, SIGSEGV, SIGBUS, and SIGTRAP provided that
80  * si_code is non-zero and __ISR_VALID is set in si_flags.
81  */
82 #define si_isr _sifields._sigfault._isr
83 
84 /*
85  * Flag values for si_flags:
86  */
87 #define __ISR_VALID_BIT 0
88 #define __ISR_VALID (1 << __ISR_VALID_BIT)
89 
90 /*
91  * SIGILL si_codes
92  */
93 #define ILL_BADIADDR (__SI_FAULT|9) /* unimplemented instruction address */
94 #define __ILL_BREAK (__SI_FAULT|10) /* illegal break */
95 #define __ILL_BNDMOD (__SI_FAULT|11) /* bundle-update (modification) in progress */
96 #undef NSIGILL
97 #define NSIGILL 11
98 
99 /*
100  * SIGFPE si_codes
101  */
102 #define __FPE_DECOVF (__SI_FAULT|9) /* decimal overflow */
103 #define __FPE_DECDIV (__SI_FAULT|10) /* decimal division by zero */
104 #define __FPE_DECERR (__SI_FAULT|11) /* packed decimal error */
105 #define __FPE_INVASC (__SI_FAULT|12) /* invalid ASCII digit */
106 #define __FPE_INVDEC (__SI_FAULT|13) /* invalid decimal digit */
107 #undef NSIGFPE
108 #define NSIGFPE 13
109 
110 /*
111  * SIGSEGV si_codes
112  */
113 #define __SEGV_PSTKOVF (__SI_FAULT|3) /* paragraph stack overflow */
114 #undef NSIGSEGV
115 #define NSIGSEGV 3
116 
117 #undef NSIGTRAP
118 #define NSIGTRAP 4
119 
120 
121 #endif /* _UAPI_ASM_IA64_SIGINFO_H */