Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / include / uapi / linux / time.h
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _UAPI_LINUX_TIME_H
3 #define _UAPI_LINUX_TIME_H
4
5 #include <linux/types.h>
6 #include <linux/time_types.h>
7
8 #ifndef _STRUCT_TIMESPEC
9 #define _STRUCT_TIMESPEC
10 struct timespec {
11         __kernel_time_t tv_sec;                 /* seconds */
12         long            tv_nsec;                /* nanoseconds */
13 };
14 #endif
15
16 struct timeval {
17         __kernel_time_t         tv_sec;         /* seconds */
18         __kernel_suseconds_t    tv_usec;        /* microseconds */
19 };
20
21 struct timezone {
22         int     tz_minuteswest; /* minutes west of Greenwich */
23         int     tz_dsttime;     /* type of dst correction */
24 };
25
26 /*
27  * Names of the interval timers, and structure
28  * defining a timer setting:
29  */
30 #define ITIMER_REAL             0
31 #define ITIMER_VIRTUAL          1
32 #define ITIMER_PROF             2
33
34 struct itimerspec {
35         struct timespec it_interval;    /* timer period */
36         struct timespec it_value;       /* timer expiration */
37 };
38
39 struct itimerval {
40         struct timeval it_interval;     /* timer interval */
41         struct timeval it_value;        /* current value */
42 };
43
44 /*
45  * The IDs of the various system clocks (for POSIX.1b interval timers):
46  */
47 #define CLOCK_REALTIME                  0
48 #define CLOCK_MONOTONIC                 1
49 #define CLOCK_PROCESS_CPUTIME_ID        2
50 #define CLOCK_THREAD_CPUTIME_ID         3
51 #define CLOCK_MONOTONIC_RAW             4
52 #define CLOCK_REALTIME_COARSE           5
53 #define CLOCK_MONOTONIC_COARSE          6
54 #define CLOCK_BOOTTIME                  7
55 #define CLOCK_REALTIME_ALARM            8
56 #define CLOCK_BOOTTIME_ALARM            9
57 /*
58  * The driver implementing this got removed. The clock ID is kept as a
59  * place holder. Do not reuse!
60  */
61 #define CLOCK_SGI_CYCLE                 10
62 #define CLOCK_TAI                       11
63
64 #define MAX_CLOCKS                      16
65 #define CLOCKS_MASK                     (CLOCK_REALTIME | CLOCK_MONOTONIC)
66 #define CLOCKS_MONO                     CLOCK_MONOTONIC
67
68 /*
69  * The various flags for setting POSIX.1b interval timers:
70  */
71 #define TIMER_ABSTIME                   0x01
72
73 #endif /* _UAPI_LINUX_TIME_H */