1#ifndef _LINUX_TIME_H
2#define _LINUX_TIME_H
3
4#include <asm/param.h>
5#include <linux/types.h>
6
7#ifndef _STRUCT_TIMESPEC
8#define _STRUCT_TIMESPEC
9struct timespec {
10 time_t tv_sec;
11 long tv_nsec;
12};
13#endif
14
15#ifdef __KERNEL__
16
17
18
19
20
21
22
23
24
25
26
27
28
29#define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
30
31static __inline__ unsigned long
32timespec_to_jiffies(struct timespec *value)
33{
34 unsigned long sec = value->tv_sec;
35 long nsec = value->tv_nsec;
36
37 if (sec >= (MAX_JIFFY_OFFSET / HZ))
38 return MAX_JIFFY_OFFSET;
39 nsec += 1000000000L / HZ - 1;
40 nsec /= 1000000000L / HZ;
41 return HZ * sec + nsec;
42}
43
44static __inline__ void
45jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
46{
47 value->tv_nsec = (jiffies % HZ) * (1000000000L / HZ);
48 value->tv_sec = jiffies / HZ;
49}
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67static inline unsigned long
68mktime (unsigned int year, unsigned int mon,
69 unsigned int day, unsigned int hour,
70 unsigned int min, unsigned int sec)
71{
72 if (0 >= (int) (mon -= 2)) {
73 mon += 12;
74 year -= 1;
75 }
76
77 return (((
78 (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
79 year*365 - 719499
80 )*24 + hour
81 )*60 + min
82 )*60 + sec;
83}
84
85#endif
86
87
88struct timeval {
89 time_t tv_sec;
90 suseconds_t tv_usec;
91};
92
93struct timezone {
94 int tz_minuteswest;
95 int tz_dsttime;
96};
97
98#define NFDBITS __NFDBITS
99
100#ifdef __KERNEL__
101extern void do_gettimeofday(struct timeval *tv);
102extern void do_settimeofday(struct timeval *tv);
103#endif
104
105#define FD_SETSIZE __FD_SETSIZE
106#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp)
107#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp)
108#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp)
109#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp)
110
111
112
113
114
115#define ITIMER_REAL 0
116#define ITIMER_VIRTUAL 1
117#define ITIMER_PROF 2
118
119struct itimerspec {
120 struct timespec it_interval;
121 struct timespec it_value;
122};
123
124struct itimerval {
125 struct timeval it_interval;
126 struct timeval it_value;
127};
128
129#endif
130