at v2.6.27 693 B view raw
1#ifndef _X86_CURRENT_H 2#define _X86_CURRENT_H 3 4#ifdef CONFIG_X86_32 5#include <linux/compiler.h> 6#include <asm/percpu.h> 7 8struct task_struct; 9 10DECLARE_PER_CPU(struct task_struct *, current_task); 11static __always_inline struct task_struct *get_current(void) 12{ 13 return x86_read_percpu(current_task); 14} 15 16#else /* X86_32 */ 17 18#ifndef __ASSEMBLY__ 19#include <asm/pda.h> 20 21struct task_struct; 22 23static __always_inline struct task_struct *get_current(void) 24{ 25 return read_pda(pcurrent); 26} 27 28#else /* __ASSEMBLY__ */ 29 30#include <asm/asm-offsets.h> 31#define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg 32 33#endif /* __ASSEMBLY__ */ 34 35#endif /* X86_32 */ 36 37#define current get_current() 38 39#endif /* X86_CURRENT_H */