1#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
59
60#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 */
70