1
2#ifndef _LINUX_TIME_H
3#define _LINUX_TIME_H
4
5# include <linux/cache.h>
6# include <linux/math64.h>
7# include <linux/time64.h>
8
9extern struct timezone sys_tz;
10
11int get_timespec64(struct timespec64 *ts,
12 const struct __kernel_timespec __user *uts);
13int put_timespec64(const struct timespec64 *ts,
14 struct __kernel_timespec __user *uts);
15int get_itimerspec64(struct itimerspec64 *it,
16 const struct __kernel_itimerspec __user *uit);
17int put_itimerspec64(const struct itimerspec64 *it,
18 struct __kernel_itimerspec __user *uit);
19
20extern time64_t mktime64(const unsigned int year, const unsigned int mon,
21 const unsigned int day, const unsigned int hour,
22 const unsigned int min, const unsigned int sec);
23
24#ifdef CONFIG_POSIX_TIMERS
25extern void clear_itimer(void);
26#else
27static inline void clear_itimer(void) {}
28#endif
29
30extern long do_utimes(int dfd, const char __user *filename, struct timespec64 *times, int flags);
31
32
33
34
35
36struct tm {
37
38
39
40
41 int tm_sec;
42
43 int tm_min;
44
45 int tm_hour;
46
47 int tm_mday;
48
49 int tm_mon;
50
51 long tm_year;
52
53 int tm_wday;
54
55 int tm_yday;
56};
57
58void time64_to_tm(time64_t totalsecs, int offset, struct tm *result);
59
60# include <linux/time32.h>
61
62static inline bool itimerspec64_valid(const struct itimerspec64 *its)
63{
64 if (!timespec64_valid(&(its->it_interval)) ||
65 !timespec64_valid(&(its->it_value)))
66 return false;
67
68 return true;
69}
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84#define time_after32(a, b) ((s32)((u32)(b) - (u32)(a)) < 0)
85#define time_before32(b, a) time_after32(a, b)
86
87
88
89
90
91
92
93
94
95
96
97
98#define time_between32(t, l, h) ((u32)(h) - (u32)(l) >= (u32)(t) - (u32)(l))
99
100# include <vdso/time.h>
101
102#endif
103