cpp-d1064d
[cross.git] / i686-linux-gnu-4.7 / usr / include / x86_64-linux-gnu / bits / types / sigevent_t.h
1 #ifndef __sigevent_t_defined
2 #define __sigevent_t_defined 1
3
4 #include <bits/wordsize.h>
5 #include <bits/types.h>
6 #include <bits/types/__sigval_t.h>
7
8 #define __SIGEV_MAX_SIZE        64
9 #if __WORDSIZE == 64
10 # define __SIGEV_PAD_SIZE       ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
11 #else
12 # define __SIGEV_PAD_SIZE       ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
13 #endif
14
15 /* Forward declaration.  */
16 #ifndef __have_pthread_attr_t
17 typedef union pthread_attr_t pthread_attr_t;
18 # define __have_pthread_attr_t  1
19 #endif
20
21 /* Structure to transport application-defined values with signals.  */
22 typedef struct sigevent
23   {
24     __sigval_t sigev_value;
25     int sigev_signo;
26     int sigev_notify;
27
28     union
29       {
30         int _pad[__SIGEV_PAD_SIZE];
31
32         /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
33            thread to receive the signal.  */
34         __pid_t _tid;
35
36         struct
37           {
38             void (*_function) (__sigval_t);     /* Function to start.  */
39             pthread_attr_t *_attribute;         /* Thread attributes.  */
40           } _sigev_thread;
41       } _sigev_un;
42   } sigevent_t;
43
44 /* POSIX names to access some of the members.  */
45 #define sigev_notify_function   _sigev_un._sigev_thread._function
46 #define sigev_notify_attributes _sigev_un._sigev_thread._attribute
47
48 #endif