Loading...
/*
* 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;
};
|