diff options
| -rw-r--r-- | include/linux/time.h | 18 | ||||
| -rw-r--r-- | kernel/hrtimer.c | 4 | ||||
| -rw-r--r-- | kernel/time.c | 4 |
3 files changed, 10 insertions, 16 deletions
diff --git a/include/linux/time.h b/include/linux/time.h index bf0e785e2e03..0cd696cee998 100644 --- a/include/linux/time.h +++ b/include/linux/time.h | |||
| @@ -73,12 +73,6 @@ extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec); | |||
| 73 | #define timespec_valid(ts) \ | 73 | #define timespec_valid(ts) \ |
| 74 | (((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC)) | 74 | (((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC)) |
| 75 | 75 | ||
| 76 | /* | ||
| 77 | * 64-bit nanosec type. Large enough to span 292+ years in nanosecond | ||
| 78 | * resolution. Ought to be enough for a while. | ||
| 79 | */ | ||
| 80 | typedef s64 nsec_t; | ||
| 81 | |||
| 82 | extern struct timespec xtime; | 76 | extern struct timespec xtime; |
| 83 | extern struct timespec wall_to_monotonic; | 77 | extern struct timespec wall_to_monotonic; |
| 84 | extern seqlock_t xtime_lock; | 78 | extern seqlock_t xtime_lock; |
| @@ -114,9 +108,9 @@ extern struct timespec timespec_trunc(struct timespec t, unsigned gran); | |||
| 114 | * Returns the scalar nanosecond representation of the timespec | 108 | * Returns the scalar nanosecond representation of the timespec |
| 115 | * parameter. | 109 | * parameter. |
| 116 | */ | 110 | */ |
| 117 | static inline nsec_t timespec_to_ns(const struct timespec *ts) | 111 | static inline s64 timespec_to_ns(const struct timespec *ts) |
| 118 | { | 112 | { |
| 119 | return ((nsec_t) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; | 113 | return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; |
| 120 | } | 114 | } |
| 121 | 115 | ||
| 122 | /** | 116 | /** |
| @@ -126,9 +120,9 @@ static inline nsec_t timespec_to_ns(const struct timespec *ts) | |||
| 126 | * Returns the scalar nanosecond representation of the timeval | 120 | * Returns the scalar nanosecond representation of the timeval |
| 127 | * parameter. | 121 | * parameter. |
| 128 | */ | 122 | */ |
| 129 | static inline nsec_t timeval_to_ns(const struct timeval *tv) | 123 | static inline s64 timeval_to_ns(const struct timeval *tv) |
| 130 | { | 124 | { |
| 131 | return ((nsec_t) tv->tv_sec * NSEC_PER_SEC) + | 125 | return ((s64) tv->tv_sec * NSEC_PER_SEC) + |
| 132 | tv->tv_usec * NSEC_PER_USEC; | 126 | tv->tv_usec * NSEC_PER_USEC; |
| 133 | } | 127 | } |
| 134 | 128 | ||
| @@ -138,7 +132,7 @@ static inline nsec_t timeval_to_ns(const struct timeval *tv) | |||
| 138 | * | 132 | * |
| 139 | * Returns the timespec representation of the nsec parameter. | 133 | * Returns the timespec representation of the nsec parameter. |
| 140 | */ | 134 | */ |
| 141 | extern struct timespec ns_to_timespec(const nsec_t nsec); | 135 | extern struct timespec ns_to_timespec(const s64 nsec); |
| 142 | 136 | ||
| 143 | /** | 137 | /** |
| 144 | * ns_to_timeval - Convert nanoseconds to timeval | 138 | * ns_to_timeval - Convert nanoseconds to timeval |
| @@ -146,7 +140,7 @@ extern struct timespec ns_to_timespec(const nsec_t nsec); | |||
| 146 | * | 140 | * |
| 147 | * Returns the timeval representation of the nsec parameter. | 141 | * Returns the timeval representation of the nsec parameter. |
| 148 | */ | 142 | */ |
| 149 | extern struct timeval ns_to_timeval(const nsec_t nsec); | 143 | extern struct timeval ns_to_timeval(const s64 nsec); |
| 150 | 144 | ||
| 151 | #endif /* __KERNEL__ */ | 145 | #endif /* __KERNEL__ */ |
| 152 | 146 | ||
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 658d49feedb9..44108de4f028 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
| @@ -266,7 +266,7 @@ ktime_t ktime_add_ns(const ktime_t kt, u64 nsec) | |||
| 266 | /* | 266 | /* |
| 267 | * Divide a ktime value by a nanosecond value | 267 | * Divide a ktime value by a nanosecond value |
| 268 | */ | 268 | */ |
| 269 | static unsigned long ktime_divns(const ktime_t kt, nsec_t div) | 269 | static unsigned long ktime_divns(const ktime_t kt, s64 div) |
| 270 | { | 270 | { |
| 271 | u64 dclc, inc, dns; | 271 | u64 dclc, inc, dns; |
| 272 | int sft = 0; | 272 | int sft = 0; |
| @@ -322,7 +322,7 @@ hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) | |||
| 322 | interval.tv64 = timer->base->resolution.tv64; | 322 | interval.tv64 = timer->base->resolution.tv64; |
| 323 | 323 | ||
| 324 | if (unlikely(delta.tv64 >= interval.tv64)) { | 324 | if (unlikely(delta.tv64 >= interval.tv64)) { |
| 325 | nsec_t incr = ktime_to_ns(interval); | 325 | s64 incr = ktime_to_ns(interval); |
| 326 | 326 | ||
| 327 | orun = ktime_divns(delta, incr); | 327 | orun = ktime_divns(delta, incr); |
| 328 | timer->expires = ktime_add_ns(timer->expires, incr * orun); | 328 | timer->expires = ktime_add_ns(timer->expires, incr * orun); |
diff --git a/kernel/time.c b/kernel/time.c index e00a97b77241..ff8e7019c4c4 100644 --- a/kernel/time.c +++ b/kernel/time.c | |||
| @@ -610,7 +610,7 @@ void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec) | |||
| 610 | * | 610 | * |
| 611 | * Returns the timespec representation of the nsec parameter. | 611 | * Returns the timespec representation of the nsec parameter. |
| 612 | */ | 612 | */ |
| 613 | struct timespec ns_to_timespec(const nsec_t nsec) | 613 | struct timespec ns_to_timespec(const s64 nsec) |
| 614 | { | 614 | { |
| 615 | struct timespec ts; | 615 | struct timespec ts; |
| 616 | 616 | ||
| @@ -630,7 +630,7 @@ struct timespec ns_to_timespec(const nsec_t nsec) | |||
| 630 | * | 630 | * |
| 631 | * Returns the timeval representation of the nsec parameter. | 631 | * Returns the timeval representation of the nsec parameter. |
| 632 | */ | 632 | */ |
| 633 | struct timeval ns_to_timeval(const nsec_t nsec) | 633 | struct timeval ns_to_timeval(const s64 nsec) |
| 634 | { | 634 | { |
| 635 | struct timespec ts = ns_to_timespec(nsec); | 635 | struct timespec ts = ns_to_timespec(nsec); |
| 636 | struct timeval tv; | 636 | struct timeval tv; |
