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