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
49