~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-s390/siginfo.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *  include/asm-s390/siginfo.h
  3  *
  4  *  S390 version
  5  *
  6  *  Derived from "include/asm-i386/siginfo.h"
  7  */
  8 
  9 #ifndef _S390_SIGINFO_H
 10 #define _S390_SIGINFO_H
 11 
 12 #include <linux/types.h>
 13 
 14 /* XXX: This structure was copied from the Alpha; is there an iBCS version?  */
 15 
 16 typedef union sigval {
 17         int sival_int;
 18         void *sival_ptr;
 19 } sigval_t;
 20 
 21 #define SI_MAX_SIZE     128
 22 #define SI_PAD_SIZE     ((SI_MAX_SIZE/sizeof(int)) - 3)
 23 
 24 typedef struct siginfo {
 25         int si_signo;
 26         int si_errno;
 27         int si_code;
 28 
 29         union {
 30                 int _pad[SI_PAD_SIZE];
 31 
 32                 /* kill() */
 33                 struct {
 34                         pid_t _pid;             /* sender's pid */
 35                         uid_t _uid;             /* sender's uid */
 36                 } _kill;
 37 
 38                 /* POSIX.1b timers */
 39                 struct {
 40                         unsigned int _timer1;
 41                         unsigned int _timer2;
 42                 } _timer;
 43 
 44                 /* POSIX.1b signals */
 45                 struct {
 46                         pid_t _pid;             /* sender's pid */
 47                         uid_t _uid;             /* sender's uid */
 48                         sigval_t _sigval;
 49                 } _rt;
 50 
 51                 /* SIGCHLD */
 52                 struct {
 53                         pid_t _pid;             /* which child */
 54                         uid_t _uid;             /* sender's uid */
 55                         int _status;            /* exit code */
 56                         clock_t _utime;
 57                         clock_t _stime;
 58                 } _sigchld;
 59 
 60                 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
 61                 struct {
 62                         void *_addr; /* faulting insn/memory ref. */
 63                 } _sigfault;
 64 
 65                 /* SIGPOLL */
 66                 struct {
 67                         int _band;      /* POLL_IN, POLL_OUT, POLL_MSG */
 68                         int _fd;
 69                 } _sigpoll;
 70         } _sifields;
 71 } siginfo_t;
 72 
 73 /*
 74  * How these fields are to be accessed.
 75  */
 76 #define si_pid          _sifields._kill._pid
 77 #define si_uid          _sifields._kill._uid
 78 #define si_status       _sifields._sigchld._status
 79 #define si_utime        _sifields._sigchld._utime
 80 #define si_stime        _sifields._sigchld._stime
 81 #define si_value        _sifields._rt._sigval
 82 #define si_int          _sifields._rt._sigval.sival_int
 83 #define si_ptr          _sifields._rt._sigval.sival_ptr
 84 #define si_addr         _sifields._sigfault._addr
 85 #define si_band         _sifields._sigpoll._band
 86 #define si_fd           _sifields._sigpoll._fd
 87 
 88 /*
 89  * si_code values
 90  * Digital reserves positive values for kernel-generated signals.
 91  */
 92 #define SI_USER         0       /* sent by kill, sigsend, raise */
 93 #define SI_KERNEL       0x80    /* sent by the kernel from somewhere */
 94 #define SI_QUEUE        -1      /* sent by sigqueue */
 95 #define SI_TIMER        -2      /* sent by timer expiration */
 96 #define SI_MESGQ        -3      /* sent by real time mesq state change */
 97 #define SI_ASYNCIO      -4      /* sent by AIO completion */
 98 #define SI_SIGIO        -5      /* sent by queued SIGIO */
 99 
100 #define SI_FROMUSER(siptr)      ((siptr)->si_code <= 0)
101 #define SI_FROMKERNEL(siptr)    ((siptr)->si_code > 0)
102 
103 /*
104  * SIGILL si_codes
105  */
106 #define ILL_ILLOPC      1       /* illegal opcode */
107 #define ILL_ILLOPN      2       /* illegal operand */
108 #define ILL_ILLADR      3       /* illegal addressing mode */
109 #define ILL_ILLTRP      4       /* illegal trap */
110 #define ILL_PRVOPC      5       /* privileged opcode */
111 #define ILL_PRVREG      6       /* privileged register */
112 #define ILL_COPROC      7       /* coprocessor error */
113 #define ILL_BADSTK      8       /* internal stack error */
114 #define NSIGILL         8
115 
116 /*
117  * SIGFPE si_codes
118  */
119 #define FPE_INTDIV      1       /* integer divide by zero */
120 #define FPE_INTOVF      2       /* integer overflow */
121 #define FPE_FLTDIV      3       /* floating point divide by zero */
122 #define FPE_FLTOVF      4       /* floating point overflow */
123 #define FPE_FLTUND      5       /* floating point underflow */
124 #define FPE_FLTRES      6       /* floating point inexact result */
125 #define FPE_FLTINV      7       /* floating point invalid operation */
126 #define FPE_FLTSUB      8       /* subscript out of range */
127 #define NSIGFPE         8
128 
129 /*
130  * SIGSEGV si_codes
131  */
132 #define SEGV_MAPERR     1       /* address not mapped to object */
133 #define SEGV_ACCERR     2       /* invalid permissions for mapped object */
134 #define NSIGSEGV        2
135 
136 /*
137  * SIGBUS si_codes
138  */
139 #define BUS_ADRALN      1       /* invalid address alignment */
140 #define BUS_ADRERR      2       /* non-existant physical address */
141 #define BUS_OBJERR      3       /* object specific hardware error */
142 #define NSIGBUS         3
143 
144 /*
145  * SIGTRAP si_codes
146  */
147 #define TRAP_BRKPT      1       /* process breakpoint */
148 #define TRAP_TRACE      2       /* process trace trap */
149 #define NSIGTRAP        2
150 
151 /*
152  * SIGCHLD si_codes
153  */
154 #define CLD_EXITED      1       /* child has exited */
155 #define CLD_KILLED      2       /* child was killed */
156 #define CLD_DUMPED      3       /* child terminated abnormally */
157 #define CLD_TRAPPED     4       /* traced child has trapped */
158 #define CLD_STOPPED     5       /* child has stopped */
159 #define CLD_CONTINUED   6       /* stopped child has continued */
160 #define NSIGCHLD
161 
162 /*
163  * SIGPOLL si_codes
164  */
165 #define POLL_IN         1       /* data input available */
166 #define POLL_OUT        2       /* output buffers available */
167 #define POLL_MSG        3       /* input message available */
168 #define POLL_ERR        4       /* i/o error */
169 #define POLL_PRI        5       /* high priority input available */
170 #define POLL_HUP        6       /* device disconnected */
171 #define NSIGPOLL        6
172 
173 /*
174  * sigevent definitions
175  * 
176  * It seems likely that SIGEV_THREAD will have to be handled from 
177  * userspace, libpthread transmuting it to SIGEV_SIGNAL, which the
178  * thread manager then catches and does the appropriate nonsense.
179  * However, everything is written out here so as to not get lost.
180  */
181 #define SIGEV_SIGNAL    0       /* notify via signal */
182 #define SIGEV_NONE      1       /* other notification: meaningless */
183 #define SIGEV_THREAD    2       /* deliver via thread creation */
184 
185 #define SIGEV_MAX_SIZE  64
186 #define SIGEV_PAD_SIZE  ((SIGEV_MAX_SIZE/sizeof(int)) - 3)
187 
188 typedef struct sigevent {
189         sigval_t sigev_value;
190         int sigev_signo;
191         int sigev_notify;
192         union {
193                 int _pad[SIGEV_PAD_SIZE];
194 
195                 struct {
196                         void (*_function)(sigval_t);
197                         void *_attribute;       /* really pthread_attr_t */
198                 } _sigev_thread;
199         } _sigev_un;
200 } sigevent_t;
201 
202 #define sigev_notify_function   _sigev_un._sigev_thread._function
203 #define sigev_notify_attributes _sigev_un._sigev_thread._attribute
204 
205 #endif
206 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.