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
9 struct timespec {
10 	__kernel_time_t	tv_sec;			/* seconds */
11 	long		tv_nsec;		/* nanoseconds */
12 };
13 #endif
14 
15 struct timeval {
16 	__kernel_time_t		tv_sec;		/* seconds */
17 	__kernel_suseconds_t	tv_usec;	/* microseconds */
18 };
19 
20 struct 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 
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 #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