projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
f144a6b
)
x86-64: Optimize vDSO time()
author
Andy Lutomirski
<
[email protected]
>
Mon, 23 May 2011 13:31:31 +0000
(09:31 -0400)
committer
Thomas Gleixner
<
[email protected]
>
Tue, 24 May 2011 12:51:29 +0000
(14:51 +0200)
This function just reads a 64-bit variable that's updated
atomically, so we don't need any locks.
Signed-off-by: Andy Lutomirski <
[email protected]
>
Cc: Andi Kleen <
[email protected]
>
Cc: Linus Torvalds <
[email protected]
>
Cc: "David S. Miller" <
[email protected]
>
Cc: Eric Dumazet <
[email protected]
>
Cc: Peter Zijlstra <
[email protected]
>
Cc: Borislav Petkov <
[email protected]
>
Link:
http://lkml.kernel.org/r/%3C40e2700f8cda4d511e5910be1e633025d28b36c2.1306156808.git.luto%40mit.edu%3E
Signed-off-by: Thomas Gleixner <
[email protected]
>
arch/x86/vdso/vclock_gettime.c
patch
|
blob
|
history
diff --git
a/arch/x86/vdso/vclock_gettime.c
b/arch/x86/vdso/vclock_gettime.c
index e6e9f90a8cd7c5fb5cb1f161b08bf8946a8116ae..a69929e8bfdb56ee736426820ecda51f202e7406 100644
(file)
--- a/
arch/x86/vdso/vclock_gettime.c
+++ b/
arch/x86/vdso/vclock_gettime.c
@@
-180,12
+180,8
@@
notrace time_t __vdso_time(time_t *t)
if (unlikely(!VVAR(vsyscall_gtod_data).sysctl_enabled))
return time_syscall(t);
- do {
- seq = read_seqbegin(&VVAR(vsyscall_gtod_data).lock);
-
- result = VVAR(vsyscall_gtod_data).wall_time_sec;
-
- } while (read_seqretry(&VVAR(vsyscall_gtod_data).lock, seq));
+ /* This is atomic on x86_64 so we don't need any locks. */
+ result = ACCESS_ONCE(VVAR(vsyscall_gtod_data).wall_time_sec);
if (t)
*t = result;