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