| 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | 
|---|
| 2 | #ifndef _UAPI_LINUX_TIME_H | 
|---|
| 3 | #define _UAPI_LINUX_TIME_H | 
|---|
| 4 |  | 
|---|
| 5 | #include <linux/types.h> | 
|---|
| 6 | #include <linux/time_types.h> | 
|---|
| 7 |  | 
|---|
| 8 | #ifndef __KERNEL__ | 
|---|
| 9 | #ifndef _STRUCT_TIMESPEC | 
|---|
| 10 | #define _STRUCT_TIMESPEC | 
|---|
| 11 | struct timespec { | 
|---|
| 12 | __kernel_old_time_t	tv_sec;		/* seconds */ | 
|---|
| 13 | long			tv_nsec;	/* nanoseconds */ | 
|---|
| 14 | }; | 
|---|
| 15 | #endif | 
|---|
| 16 |  | 
|---|
| 17 | struct timeval { | 
|---|
| 18 | __kernel_old_time_t	tv_sec;		/* seconds */ | 
|---|
| 19 | __kernel_suseconds_t	tv_usec;	/* microseconds */ | 
|---|
| 20 | }; | 
|---|
| 21 |  | 
|---|
| 22 | struct itimerspec { | 
|---|
| 23 | struct timespec it_interval;/* timer period */ | 
|---|
| 24 | struct timespec it_value;	/* timer expiration */ | 
|---|
| 25 | }; | 
|---|
| 26 |  | 
|---|
| 27 | struct itimerval { | 
|---|
| 28 | struct timeval it_interval;/* timer interval */ | 
|---|
| 29 | struct timeval it_value;	/* current value */ | 
|---|
| 30 | }; | 
|---|
| 31 | #endif | 
|---|
| 32 |  | 
|---|
| 33 | struct timezone { | 
|---|
| 34 | int	tz_minuteswest;	/* minutes west of Greenwich */ | 
|---|
| 35 | int	tz_dsttime;	/* type of dst correction */ | 
|---|
| 36 | }; | 
|---|
| 37 |  | 
|---|
| 38 | /* | 
|---|
| 39 | * Names of the interval timers, and structure | 
|---|
| 40 | * defining a timer setting: | 
|---|
| 41 | */ | 
|---|
| 42 | #define	ITIMER_REAL		0 | 
|---|
| 43 | #define	ITIMER_VIRTUAL		1 | 
|---|
| 44 | #define	ITIMER_PROF		2 | 
|---|
| 45 |  | 
|---|
| 46 | /* | 
|---|
| 47 | * The IDs of the various system clocks (for POSIX.1b interval timers): | 
|---|
| 48 | */ | 
|---|
| 49 | #define CLOCK_REALTIME			0 | 
|---|
| 50 | #define CLOCK_MONOTONIC			1 | 
|---|
| 51 | #define CLOCK_PROCESS_CPUTIME_ID	2 | 
|---|
| 52 | #define CLOCK_THREAD_CPUTIME_ID		3 | 
|---|
| 53 | #define CLOCK_MONOTONIC_RAW		4 | 
|---|
| 54 | #define CLOCK_REALTIME_COARSE		5 | 
|---|
| 55 | #define CLOCK_MONOTONIC_COARSE		6 | 
|---|
| 56 | #define CLOCK_BOOTTIME			7 | 
|---|
| 57 | #define CLOCK_REALTIME_ALARM		8 | 
|---|
| 58 | #define CLOCK_BOOTTIME_ALARM		9 | 
|---|
| 59 | /* | 
|---|
| 60 | * The driver implementing this got removed. The clock ID is kept as a | 
|---|
| 61 | * place holder. Do not reuse! | 
|---|
| 62 | */ | 
|---|
| 63 | #define CLOCK_SGI_CYCLE			10 | 
|---|
| 64 | #define CLOCK_TAI			11 | 
|---|
| 65 |  | 
|---|
| 66 | #define MAX_CLOCKS			16 | 
|---|
| 67 |  | 
|---|
| 68 | /* | 
|---|
| 69 | * AUX clock support. AUXiliary clocks are dynamically configured by | 
|---|
| 70 | * enabling a clock ID. These clock can be steered independently of the | 
|---|
| 71 | * core timekeeper. The kernel can support up to 8 auxiliary clocks, but | 
|---|
| 72 | * the actual limit depends on eventual architecture constraints vs. VDSO. | 
|---|
| 73 | */ | 
|---|
| 74 | #define CLOCK_AUX			MAX_CLOCKS | 
|---|
| 75 | #define MAX_AUX_CLOCKS			8 | 
|---|
| 76 | #define CLOCK_AUX_LAST			(CLOCK_AUX + MAX_AUX_CLOCKS - 1) | 
|---|
| 77 |  | 
|---|
| 78 | #define CLOCKS_MASK			(CLOCK_REALTIME | CLOCK_MONOTONIC) | 
|---|
| 79 | #define CLOCKS_MONO			CLOCK_MONOTONIC | 
|---|
| 80 |  | 
|---|
| 81 | /* | 
|---|
| 82 | * The various flags for setting POSIX.1b interval timers: | 
|---|
| 83 | */ | 
|---|
| 84 | #define TIMER_ABSTIME			0x01 | 
|---|
| 85 |  | 
|---|
| 86 | #endif /* _UAPI_LINUX_TIME_H */ | 
|---|
| 87 |  | 
|---|