130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_LINUX_TIME_H
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_LINUX_TIME_H
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _STRUCT_TIMESPEC
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _STRUCT_TIMESPEC
930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct timespec {
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__kernel_time_t	tv_sec;			/* seconds */
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	long		tv_nsec;		/* nanoseconds */
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct timeval {
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__kernel_time_t		tv_sec;		/* seconds */
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__kernel_suseconds_t	tv_usec;	/* microseconds */
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct timezone {
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int	tz_minuteswest;	/* minutes west of Greenwich */
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	int	tz_dsttime;	/* type of dst correction */
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Names of the interval timers, and structure
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * defining a timer setting:
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	ITIMER_REAL		0
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	ITIMER_VIRTUAL		1
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define	ITIMER_PROF		2
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct itimerspec {
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timespec it_interval;	/* timer period */
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timespec it_value;	/* timer expiration */
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct itimerval {
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timeval it_interval;	/* timer interval */
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct timeval it_value;	/* current value */
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The IDs of the various system clocks (for POSIX.1b interval timers):
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_REALTIME			0
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_MONOTONIC			1
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_PROCESS_CPUTIME_ID	2
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_THREAD_CPUTIME_ID		3
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_MONOTONIC_RAW		4
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_REALTIME_COARSE		5
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_MONOTONIC_COARSE		6
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_BOOTTIME			7
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_REALTIME_ALARM		8
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_BOOTTIME_ALARM		9
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_SGI_CYCLE			10	/* Hardware specific */
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCK_TAI			11
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define MAX_CLOCKS			16
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCKS_MASK			(CLOCK_REALTIME | CLOCK_MONOTONIC)
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define CLOCKS_MONO			CLOCK_MONOTONIC
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * The various flags for setting POSIX.1b interval timers:
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TIMER_ABSTIME			0x01
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_LINUX_TIME_H */
70