aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2005-12-14 02:59:50 -0500
committerLen Brown <len.brown@intel.com>2005-12-14 02:59:50 -0500
commitd3e4cefc86ce1aefc0e9aebdc56308cb4bd51997 (patch)
treef4418610996064cab63600ca093de65356dcdfde /kernel/time.c
parent927fe18397b3b1194a5b26b1d388d97e391e5fd2 (diff)
parentacd9b7b4e08a3f0f48afa922d8e371414cf2d3b2 (diff)
Auto-update from upstream
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{