diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2006-01-09 23:52:30 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-10 11:01:37 -0500 |
| commit | f8f46da3b4cbb03b43a102b1eb92b63419e10f90 (patch) | |
| tree | e27636e88406d96ddae4687267f4854171303c8d /include/linux | |
| parent | 718bcceb5ad72a5def2c2fd1fa3ef964be32a857 (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.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/include/linux/time.h b/include/linux/time.h index 64e797464589..f639fde29253 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 | */ | ||
| 57 | typedef s64 nsec_t; | ||
| 58 | |||
| 53 | extern struct timespec xtime; | 59 | extern struct timespec xtime; |
| 54 | extern struct timespec wall_to_monotonic; | 60 | extern struct timespec wall_to_monotonic; |
| 55 | extern seqlock_t xtime_lock; | 61 | extern seqlock_t xtime_lock; |
| @@ -79,6 +85,47 @@ extern void getnstimestamp(struct timespec *ts); | |||
| 79 | 85 | ||
| 80 | extern struct timespec timespec_trunc(struct timespec t, unsigned gran); | 86 | extern 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 | */ | ||
| 95 | static 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 | */ | ||
| 107 | static 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 | */ | ||
| 119 | extern 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 | */ | ||
| 127 | extern 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 |
