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
10struct timespec {
11 __kernel_old_time_t tv_sec; /* seconds */
12 long tv_nsec; /* nanoseconds */
13};
14#endif
15
16struct timeval {
17 __kernel_old_time_t tv_sec; /* seconds */
18 __kernel_suseconds_t tv_usec; /* microseconds */
19};
20
21struct itimerspec {
22 struct timespec it_interval;/* timer period */
23 struct timespec it_value; /* timer expiration */
24};
25
26struct itimerval {
27 struct timeval it_interval;/* timer interval */
28 struct timeval it_value; /* current value */
29};
30
31struct 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#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
66#define CLOCKS_MONO CLOCK_MONOTONIC
67
68/*
69 * The various flags for setting POSIX.1b interval timers:
70 */
71#define TIMER_ABSTIME 0x01
72
73#endif /* _LINUX_TIME_H */
74