percpu: reorganize include/linux/percpu-defs.h
Reorganize for better readability. * Accessor definitions are collected into one place and SMP and UP now define them in the same order. * Definitions are layered when possible - e.g. per_cpu() is now defined in terms of this_cpu_ptr(). * Rather pointless comment dropped. * per_cpu(), __raw_get_cpu_var() and __get_cpu_var() are defined in a way which can be shared between SMP and UP and moved out of CONFIG_SMP blocks. This patch doesn't introduce any functional difference. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Christoph Lameter <cl@linux-foundation.org>
This commit is contained in:
parent
9defda18f9
commit
3b8ed91d64
1 changed files with 9 additions and 23 deletions
|
@ -215,14 +215,7 @@
|
||||||
RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset)); \
|
RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
/*
|
#define per_cpu_ptr(ptr, cpu) SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)))
|
||||||
* A percpu variable may point to a discarded regions. The following are
|
|
||||||
* established ways to produce a usable pointer from the percpu variable
|
|
||||||
* offset.
|
|
||||||
*/
|
|
||||||
#define per_cpu(var, cpu) \
|
|
||||||
(*SHIFT_PERCPU_PTR(&(var), per_cpu_offset(cpu)))
|
|
||||||
|
|
||||||
#define raw_cpu_ptr(ptr) arch_raw_cpu_ptr(ptr)
|
#define raw_cpu_ptr(ptr) arch_raw_cpu_ptr(ptr)
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_PREEMPT
|
#ifdef CONFIG_DEBUG_PREEMPT
|
||||||
|
@ -231,9 +224,6 @@
|
||||||
#define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
|
#define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __get_cpu_var(var) (*this_cpu_ptr(&(var)))
|
|
||||||
#define __raw_get_cpu_var(var) (*raw_cpu_ptr(&(var)))
|
|
||||||
|
|
||||||
#else /* CONFIG_SMP */
|
#else /* CONFIG_SMP */
|
||||||
|
|
||||||
#define VERIFY_PERCPU_PTR(__p) ({ \
|
#define VERIFY_PERCPU_PTR(__p) ({ \
|
||||||
|
@ -241,14 +231,16 @@
|
||||||
(typeof(*(__p)) __kernel __force *)(__p); \
|
(typeof(*(__p)) __kernel __force *)(__p); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define per_cpu(var, cpu) (*((void)(cpu), VERIFY_PERCPU_PTR(&(var))))
|
#define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); VERIFY_PERCPU_PTR((ptr)); })
|
||||||
#define __get_cpu_var(var) (*VERIFY_PERCPU_PTR(&(var)))
|
#define raw_cpu_ptr(ptr) per_cpu_ptr(ptr, 0)
|
||||||
#define __raw_get_cpu_var(var) (*VERIFY_PERCPU_PTR(&(var)))
|
#define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
|
||||||
#define this_cpu_ptr(ptr) per_cpu_ptr(ptr, 0)
|
|
||||||
#define raw_cpu_ptr(ptr) this_cpu_ptr(ptr)
|
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
|
||||||
|
#define per_cpu(var, cpu) (*per_cpu_ptr(&(var), cpu))
|
||||||
|
#define __raw_get_cpu_var(var) (*raw_cpu_ptr(&(var)))
|
||||||
|
#define __get_cpu_var(var) (*this_cpu_ptr(&(var)))
|
||||||
|
|
||||||
/* keep until we have removed all uses of __this_cpu_ptr */
|
/* keep until we have removed all uses of __this_cpu_ptr */
|
||||||
#define __this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
|
#define __this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
|
||||||
|
|
||||||
|
@ -278,11 +270,5 @@
|
||||||
preempt_enable(); \
|
preempt_enable(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
#define per_cpu_ptr(ptr, cpu) SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)))
|
|
||||||
#else
|
|
||||||
#define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); VERIFY_PERCPU_PTR((ptr)); })
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
#endif /* _LINUX_PERCPU_DEFS_H */
|
#endif /* _LINUX_PERCPU_DEFS_H */
|
||||||
|
|
Loading…
Add table
Reference in a new issue