| /* | 
 |  * kernel-posix-timers.h - kernel-dependent definitions for POSIX timers. | 
 |  */ | 
 |  | 
 | #include <features.h> | 
 | #include <setjmp.h> | 
 | #include <signal.h> | 
 | #include <sys/types.h> | 
 | #ifdef __UCLIBC_HAS_THREADS__ | 
 | #include <pthread.h> | 
 | #endif | 
 |  | 
 | #ifdef __UCLIBC_HAS_THREADS_NATIVE__ | 
 | /* Nonzero if the system calls are not available.  */ | 
 | extern int __no_posix_timers attribute_hidden; | 
 |  | 
 | /* Callback to start helper thread.  */ | 
 | extern void __start_helper_thread (void) attribute_hidden; | 
 |  | 
 | /* Control variable for helper thread creation.  */ | 
 | extern pthread_once_t __helper_once attribute_hidden; | 
 |  | 
 | /* TID of the helper thread.  */ | 
 | extern pid_t __helper_tid attribute_hidden; | 
 |  | 
 | /* List of active SIGEV_THREAD timers.  */ | 
 | extern struct timer *__active_timer_sigev_thread attribute_hidden; | 
 | /* Lock for the __active_timer_sigev_thread.  */ | 
 | extern pthread_mutex_t __active_timer_sigev_thread_lock attribute_hidden; | 
 | #endif | 
 |  | 
 | /* Type of timers in the kernel */ | 
 | typedef int kernel_timer_t; | 
 |  | 
 | /* Internal representation of timer */ | 
 | struct timer { | 
 |     /* Notification mechanism */ | 
 |     int sigev_notify; | 
 |  | 
 |     /* Timer ID returned by the kernel */ | 
 |     kernel_timer_t ktimerid; | 
 |  | 
 |     /* | 
 |      * All new elements must be added after ktimerid. And if the thrfunc | 
 |      * element is not the third element anymore the memory allocation in | 
 |      * timer_create needs to be changed. | 
 |      */ | 
 |  | 
 |     /* Parameters for the thread to be started for SIGEV_THREAD */ | 
 |     void (*thrfunc) (sigval_t); | 
 |     sigval_t sival; | 
 | #ifdef __UCLIBC_HAS_THREADS__ | 
 |     pthread_attr_t attr; | 
 | #endif | 
 |  | 
 |     /* Next element in list of active SIGEV_THREAD timers. */ | 
 |     struct timer *next; | 
 | }; |