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
17typedef 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. */
22typedef 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