]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - include/linux/time.h
[PATCH] hrtimer: deinline mktime and set_normalized_timespec
[mirror_ubuntu-bionic-kernel.git] / include / linux / time.h
CommitLineData
1da177e4
LT
1#ifndef _LINUX_TIME_H
2#define _LINUX_TIME_H
3
4#include <linux/types.h>
5
6#ifdef __KERNEL__
7#include <linux/seqlock.h>
8#endif
9
10#ifndef _STRUCT_TIMESPEC
11#define _STRUCT_TIMESPEC
12struct timespec {
13 time_t tv_sec; /* seconds */
14 long tv_nsec; /* nanoseconds */
15};
16#endif /* _STRUCT_TIMESPEC */
17
18struct timeval {
19 time_t tv_sec; /* seconds */
20 suseconds_t tv_usec; /* microseconds */
21};
22
23struct timezone {
24 int tz_minuteswest; /* minutes west of Greenwich */
25 int tz_dsttime; /* type of dst correction */
26};
27
28#ifdef __KERNEL__
29
30/* Parameters used to convert the timespec values */
84f902c0 31#define MSEC_PER_SEC (1000L)
1da177e4 32#define USEC_PER_SEC (1000000L)
1da177e4 33#define NSEC_PER_SEC (1000000000L)
1da177e4 34#define NSEC_PER_USEC (1000L)
1da177e4
LT
35
36static __inline__ int timespec_equal(struct timespec *a, struct timespec *b)
37{
38 return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec);
39}
40
753be622
TG
41extern unsigned long mktime (unsigned int year, unsigned int mon,
42 unsigned int day, unsigned int hour,
43 unsigned int min, unsigned int sec);
1da177e4
LT
44
45extern struct timespec xtime;
46extern struct timespec wall_to_monotonic;
47extern seqlock_t xtime_lock;
48
49static inline unsigned long get_seconds(void)
50{
51 return xtime.tv_sec;
52}
53
753be622
TG
54extern void set_normalized_timespec (struct timespec *ts, time_t sec, long nsec);
55
1da177e4
LT
56struct timespec current_kernel_time(void);
57
58#define CURRENT_TIME (current_kernel_time())
59#define CURRENT_TIME_SEC ((struct timespec) { xtime.tv_sec, 0 })
60
61extern void do_gettimeofday(struct timeval *tv);
62extern int do_settimeofday(struct timespec *tv);
63extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz);
64extern void clock_was_set(void); // call when ever the clock is set
65extern int do_posix_clock_monotonic_gettime(struct timespec *tp);
1da177e4
LT
66extern long do_utimes(char __user * filename, struct timeval * times);
67struct itimerval;
68extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue);
69extern int do_getitimer(int which, struct itimerval *value);
70extern void getnstimeofday (struct timespec *tv);
64123fd4 71extern void getnstimestamp(struct timespec *ts);
1da177e4
LT
72
73extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
74
1da177e4
LT
75#endif /* __KERNEL__ */
76
77#define NFDBITS __NFDBITS
78
79#define FD_SETSIZE __FD_SETSIZE
80#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp)
81#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp)
82#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp)
83#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp)
84
85/*
86 * Names of the interval timers, and structure
87 * defining a timer setting.
88 */
89#define ITIMER_REAL 0
90#define ITIMER_VIRTUAL 1
91#define ITIMER_PROF 2
92
93struct itimerspec {
94 struct timespec it_interval; /* timer period */
95 struct timespec it_value; /* timer expiration */
96};
97
98struct itimerval {
99 struct timeval it_interval; /* timer interval */
100 struct timeval it_value; /* current value */
101};
102
103
104/*
105 * The IDs of the various system clocks (for POSIX.1b interval timers).
106 */
107#define CLOCK_REALTIME 0
108#define CLOCK_MONOTONIC 1
109#define CLOCK_PROCESS_CPUTIME_ID 2
110#define CLOCK_THREAD_CPUTIME_ID 3
111#define CLOCK_REALTIME_HR 4
112#define CLOCK_MONOTONIC_HR 5
113
114/*
115 * The IDs of various hardware clocks
116 */
117
118
119#define CLOCK_SGI_CYCLE 10
120#define MAX_CLOCKS 16
121#define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC | \
122 CLOCK_REALTIME_HR | CLOCK_MONOTONIC_HR)
123#define CLOCKS_MONO (CLOCK_MONOTONIC & CLOCK_MONOTONIC_HR)
124
125/*
126 * The various flags for setting POSIX.1b interval timers.
127 */
128
129#define TIMER_ABSTIME 0x01
130
131
132#endif