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