summaryrefslogtreecommitdiff
path: root/include/arch/x86_64/linux/time.h
blob: 32dca7ffdd8fa1abe0b88f96749c37a0e24e787d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_TIME_H
#define _LINUX_TIME_H

#include <linux/types.h>
#include <linux/time_types.h>

#ifndef _STRUCT_TIMESPEC
#define _STRUCT_TIMESPEC
struct timespec {
	__kernel_old_time_t tv_sec; /* seconds */
	long tv_nsec;		    /* nanoseconds */
};
#endif

struct timeval {
	__kernel_old_time_t tv_sec;   /* seconds */
	__kernel_suseconds_t tv_usec; /* microseconds */
};

struct itimerspec {
	struct timespec it_interval; /* timer period */
	struct timespec it_value;    /* timer expiration */
};

struct itimerval {
	struct timeval it_interval; /* timer interval */
	struct timeval it_value;    /* current value */
};

struct timezone {
	int tz_minuteswest; /* minutes west of Greenwich */
	int tz_dsttime;	    /* type of dst correction */
};

/*
 * Names of the interval timers, and structure
 * defining a timer setting:
 */
#define ITIMER_REAL    0
#define ITIMER_VIRTUAL 1
#define ITIMER_PROF    2

/*
 * The IDs of the various system clocks (for POSIX.1b interval timers):
 */
#define CLOCK_REALTIME		 0
#define CLOCK_MONOTONIC		 1
#define CLOCK_PROCESS_CPUTIME_ID 2
#define CLOCK_THREAD_CPUTIME_ID	 3
#define CLOCK_MONOTONIC_RAW	 4
#define CLOCK_REALTIME_COARSE	 5
#define CLOCK_MONOTONIC_COARSE	 6
#define CLOCK_BOOTTIME		 7
#define CLOCK_REALTIME_ALARM	 8
#define CLOCK_BOOTTIME_ALARM	 9
/*
 * The driver implementing this got removed. The clock ID is kept as a
 * place holder. Do not reuse!
 */
#define CLOCK_SGI_CYCLE 10
#define CLOCK_TAI	11

#define MAX_CLOCKS 16

/*
 * AUX clock support. AUXiliary clocks are dynamically configured by
 * enabling a clock ID. These clock can be steered independently of the
 * core timekeeper. The kernel can support up to 8 auxiliary clocks, but
 * the actual limit depends on eventual architecture constraints vs. VDSO.
 */
#define CLOCK_AUX      MAX_CLOCKS
#define MAX_AUX_CLOCKS 8
#define CLOCK_AUX_LAST (CLOCK_AUX + MAX_AUX_CLOCKS - 1)

#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
#define CLOCKS_MONO CLOCK_MONOTONIC

/*
 * The various flags for setting POSIX.1b interval timers:
 */
#define TIMER_ABSTIME 0x01

#endif /* _LINUX_TIME_H */