blob: 7fe799e867d4bccec063a5165c86407f4d94d450 [file] [log] [blame]
Ben Cheng30692c62013-10-15 18:26:18 -07001#ifndef _UAPI_LINUX_TIME_H
2#define _UAPI_LINUX_TIME_H
3
4#include <linux/types.h>
5
6
7#ifndef _STRUCT_TIMESPEC
8#define _STRUCT_TIMESPEC
9struct timespec {
10 __kernel_time_t tv_sec; /* seconds */
11 long tv_nsec; /* nanoseconds */
12};
13#endif
14
15struct timeval {
16 __kernel_time_t tv_sec; /* seconds */
17 __kernel_suseconds_t tv_usec; /* microseconds */
18};
19
20struct timezone {
21 int tz_minuteswest; /* minutes west of Greenwich */
22 int tz_dsttime; /* type of dst correction */
23};
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
34struct itimerspec {
35 struct timespec it_interval; /* timer period */
36 struct timespec it_value; /* timer expiration */
37};
38
39struct 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#define CLOCK_SGI_CYCLE 10 /* Hardware specific */
58#define CLOCK_TAI 11
Mao Jinlongd5a1ad22015-09-30 10:41:40 +080059#define CLOCK_POWEROFF_ALARM 12
Ben Cheng30692c62013-10-15 18:26:18 -070060
61#define MAX_CLOCKS 16
62#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
63#define CLOCKS_MONO CLOCK_MONOTONIC
64
65/*
66 * The various flags for setting POSIX.1b interval timers:
67 */
68#define TIMER_ABSTIME 0x01
69
70#endif /* _UAPI_LINUX_TIME_H */