summaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/current.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-08-03 07:08:48 +0200
committerTejun Heo <tj@kernel.org>2009-08-03 18:28:52 +0200
commited8d9adf357ec331603fa1049510399812cea7e5 (patch)
treecc6eae948bf4652b9d87aee796ae78cc6287ac36 /arch/x86/include/asm/current.h
parentMerge branch 'for-linus' of git://neil.brown.name/md (diff)
downloadlinux-ed8d9adf357ec331603fa1049510399812cea7e5.tar.xz
linux-ed8d9adf357ec331603fa1049510399812cea7e5.zip
x86, percpu: Add 'percpu_read_stable()' interface for cacheable accesses
This is very useful for some common things like 'get_current()' and 'get_thread_info()', which can be used multiple times in a function, and where the result is cacheable. tj: Added the magical undocumented "P" modifier to UP __percpu_arg() to force gcc to dereference the pointer value passed in via the "p" input constraint. Without this, percpu_read_stable() returns the address of the percpu variable. Also added comment explaining the difference between percpu_read() and percpu_read_stable(). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/include/asm/current.h')
-rw-r--r--arch/x86/include/asm/current.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/include/asm/current.h b/arch/x86/include/asm/current.h
index c68c361697e1..4d447b732d82 100644
--- a/arch/x86/include/asm/current.h
+++ b/arch/x86/include/asm/current.h
@@ -11,7 +11,7 @@ DECLARE_PER_CPU(struct task_struct *, current_task);
static __always_inline struct task_struct *get_current(void)
{
- return percpu_read(current_task);
+ return percpu_read_stable(current_task);
}
#define current get_current()