blob: e75e1b6ff27f72162a83a7ad59866acf2a8c9c20 [file] [log] [blame]
David Howells607ca462012-10-13 10:46:48 +01001#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
John Stultz1ff3c962012-05-03 12:43:40 -070057#define CLOCK_SGI_CYCLE 10 /* Hardware specific */
58#define CLOCK_TAI 11
David Howells607ca462012-10-13 10:46:48 +010059
David Howells607ca462012-10-13 10:46:48 +010060#define MAX_CLOCKS 16
61#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
62#define CLOCKS_MONO CLOCK_MONOTONIC
63
64/*
65 * The various flags for setting POSIX.1b interval timers:
66 */
67#define TIMER_ABSTIME 0x01
68
69#endif /* _UAPI_LINUX_TIME_H */