aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2006-01-09 23:52:30 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-10 11:01:37 -0500
commitf8f46da3b4cbb03b43a102b1eb92b63419e10f90 (patch)
treee27636e88406d96ddae4687267f4854171303c8d /include/linux
parent718bcceb5ad72a5def2c2fd1fa3ef964be32a857 (diff)
[PATCH] hrtimer: introduce nsec_t type and conversion functions
- introduce the nsec_t type - basic nsec conversion routines: timespec_to_ns(), timeval_to_ns(), ns_to_timespec(), ns_to_timeval(). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/time.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/include/linux/time.h b/include/linux/time.h
index 64e79746458..f639fde2925 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -50,6 +50,12 @@ extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec);
50#define timespec_valid(ts) \ 50#define timespec_valid(ts) \
51 (((ts)->tv_sec >= 0) && (((unsigned) (ts)->tv_nsec) < NSEC_PER_SEC)) 51 (((ts)->tv_sec >= 0) && (((unsigned) (ts)->tv_nsec) < NSEC_PER_SEC))
52 52
53/*
54 * 64-bit nanosec type. Large enough to span 292+ years in nanosecond
55 * resolution. Ought to be enough for a while.
56 */
57typedef s64 nsec_t;
58
53extern struct timespec xtime; 59extern struct timespec xtime;
54extern struct timespec wall_to_monotonic; 60extern struct timespec wall_to_monotonic;
55extern seqlock_t xtime_lock; 61extern seqlock_t xtime_lock;
@@ -79,6 +85,47 @@ extern void getnstimestamp(struct timespec *ts);
79 85
80extern struct timespec timespec_trunc(struct timespec t, unsigned gran); 86extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
81 87
88/**
89 * timespec_to_ns - Convert timespec to nanoseconds
90 * @ts: pointer to the timespec variable to be converted
91 *
92 * Returns the scalar nanosecond representation of the timespec
93 * parameter.
94 */
95static inline nsec_t timespec_to_ns(const struct timespec *ts)
96{
97 return ((nsec_t) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec;
98}
99
100/**
101 * timeval_to_ns - Convert timeval to nanoseconds
102 * @ts: pointer to the timeval variable to be converted
103 *
104 * Returns the scalar nanosecond representation of the timeval
105 * parameter.
106 */
107static inline nsec_t timeval_to_ns(const struct timeval *tv)
108{
109 return ((nsec_t) tv->tv_sec * NSEC_PER_SEC) +
110 tv->tv_usec * NSEC_PER_USEC;
111}
112
113/**
114 * ns_to_timespec - Convert nanoseconds to timespec
115 * @nsec: the nanoseconds value to be converted
116 *
117 * Returns the timespec representation of the nsec parameter.
118 */
119extern struct timespec ns_to_timespec(const nsec_t nsec);
120
121/**
122 * ns_to_timeval - Convert nanoseconds to timeval
123 * @nsec: the nanoseconds value to be converted
124 *
125 * Returns the timeval representation of the nsec parameter.
126 */
127extern struct timeval ns_to_timeval(const nsec_t nsec);
128
82#endif /* __KERNEL__ */ 129#endif /* __KERNEL__ */
83 130
84#define NFDBITS __NFDBITS 131#define NFDBITS __NFDBITS