summaryrefslogtreecommitdiff
path: root/librt/kernel-posix-timers.h
blob: 27d3f1fd70592e5dc11b788bddc753dad425fd28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
 * 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;
#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
};