aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time.c
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-12-12 15:30:15 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-12-12 15:30:15 -0500
commit20234989a8ae0ff418e2acdef72205fb7cb3f819 (patch)
tree6888e6c6b8f2beef67b3f85570aebb853f8443f9 /kernel/time.c
parent92f268e034faf793f6d40de2f0fc81478a14ff39 (diff)
parent49d7bc64283970ee83d2c954d04ba00d04e5943d (diff)
Merge branch 'master'
Diffstat (limited to 'kernel/time.c')
-rw-r--r--kernel/time.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel/time.c b/kernel/time.c
index 245d595a13cb..b94bfa8c03e0 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -561,6 +561,28 @@ void getnstimeofday(struct timespec *tv)
561EXPORT_SYMBOL_GPL(getnstimeofday); 561EXPORT_SYMBOL_GPL(getnstimeofday);
562#endif 562#endif
563 563
564void getnstimestamp(struct timespec *ts)
565{
566 unsigned int seq;
567 struct timespec wall2mono;
568
569 /* synchronize with settimeofday() changes */
570 do {
571 seq = read_seqbegin(&xtime_lock);
572 getnstimeofday(ts);
573 wall2mono = wall_to_monotonic;
574 } while(unlikely(read_seqretry(&xtime_lock, seq)));
575
576 /* adjust to monotonicaly-increasing values */
577 ts->tv_sec += wall2mono.tv_sec;
578 ts->tv_nsec += wall2mono.tv_nsec;
579 while (unlikely(ts->tv_nsec >= NSEC_PER_SEC)) {
580 ts->tv_nsec -= NSEC_PER_SEC;
581 ts->tv_sec++;
582 }
583}
584EXPORT_SYMBOL_GPL(getnstimestamp);
585
564#if (BITS_PER_LONG < 64) 586#if (BITS_PER_LONG < 64)
565u64 get_jiffies_64(void) 587u64 get_jiffies_64(void)
566{ 588{