aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-20 16:28:54 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-20 16:32:46 -0400
commit2008220879af095d00ca27eb168a55c8595fbc0b (patch)
tree9c5fb8b569f4e78c2dbe31cbc83cfed5c713ca68 /kernel
parent1d4ec7b1d6f130818f9b62dea3411d9ee2ff6ff6 (diff)
Revert "sys_time() speedup"
This basically reverts commit 4e44f3497d41db4c3b9051c61410dee8ae4fb49c, while waiting for it to be re-done more completely. There are cases of people mixing "time()" with higher-resolution time sources, and we need to take the nanosecond offsets into account. Ingo has a patch that does that, but it's still under some discussion. In the meantime, just revert back to the old simple situation of just doing the whole exact timesource calculations. But rather than using do_gettimeofday(), use the internal nanosecond resolution getnstimeofday(), which at least avoids one unnecessary conversion (since we really don't care about whether the fractional seconds are nanoseconds or microseconds - we'll just throw them away). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/time.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/kernel/time.c b/kernel/time.c
index e325597f5bf5..5b81da08bbdb 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -57,17 +57,14 @@ EXPORT_SYMBOL(sys_tz);
57 */ 57 */
58asmlinkage long sys_time(time_t __user * tloc) 58asmlinkage long sys_time(time_t __user * tloc)
59{ 59{
60 /* 60 time_t i;
61 * We read xtime.tv_sec atomically - it's updated 61 struct timespec tv;
62 * atomically by update_wall_time(), so no need to
63 * even read-lock the xtime seqlock:
64 */
65 time_t i = xtime.tv_sec;
66 62
67 smp_rmb(); /* sys_time() results are coherent */ 63 getnstimeofday(&tv);
64 i = tv.tv_sec;
68 65
69 if (tloc) { 66 if (tloc) {
70 if (put_user(i, tloc)) 67 if (put_user(i,tloc))
71 i = -EFAULT; 68 i = -EFAULT;
72 } 69 }
73 return i; 70 return i;