[PATCH] hrtimer: clean up mktime and make arguments const
[deliverable/linux.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
f4818900
IM
41extern unsigned long mktime(const unsigned int year, const unsigned int mon,
42 const unsigned int day, const unsigned int hour,
43 const unsigned int min, const unsigned int sec);
44
45extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec);
1da177e4
LT
46
47extern struct timespec xtime;
48extern struct timespec wall_to_monotonic;
49extern seqlock_t xtime_lock;
50
51static inline unsigned long get_seconds(void)
52{
53 return xtime.tv_sec;
54}
55
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
This page took 0.109213 seconds and 5 git commands to generate.