mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
percpu: refactor percpu.h
Impact: cleanup Refactor the DEFINE_PER_CPU_* macros and add .data.percpu.first section. Signed-off-by: Brian Gerst <brgerst@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
8ce031972b
commit
0bd74fa8e2
2 changed files with 25 additions and 19 deletions
|
@ -486,6 +486,7 @@
|
||||||
*/
|
*/
|
||||||
#define PERCPU_VADDR(vaddr, phdr) \
|
#define PERCPU_VADDR(vaddr, phdr) \
|
||||||
PERCPU_PROLOG(vaddr) \
|
PERCPU_PROLOG(vaddr) \
|
||||||
|
*(.data.percpu.first) \
|
||||||
*(.data.percpu.page_aligned) \
|
*(.data.percpu.page_aligned) \
|
||||||
*(.data.percpu) \
|
*(.data.percpu) \
|
||||||
*(.data.percpu.shared_aligned) \
|
*(.data.percpu.shared_aligned) \
|
||||||
|
|
|
@ -9,34 +9,39 @@
|
||||||
#include <asm/percpu.h>
|
#include <asm/percpu.h>
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
#define DEFINE_PER_CPU(type, name) \
|
#define PER_CPU_BASE_SECTION ".data.percpu"
|
||||||
__attribute__((__section__(".data.percpu"))) \
|
|
||||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
|
||||||
|
|
||||||
#ifdef MODULE
|
#ifdef MODULE
|
||||||
#define SHARED_ALIGNED_SECTION ".data.percpu"
|
#define PER_CPU_SHARED_ALIGNED_SECTION ""
|
||||||
#else
|
#else
|
||||||
#define SHARED_ALIGNED_SECTION ".data.percpu.shared_aligned"
|
#define PER_CPU_SHARED_ALIGNED_SECTION ".shared_aligned"
|
||||||
#endif
|
#endif
|
||||||
|
#define PER_CPU_FIRST_SECTION ".first"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define PER_CPU_BASE_SECTION ".data"
|
||||||
|
#define PER_CPU_SHARED_ALIGNED_SECTION ""
|
||||||
|
#define PER_CPU_FIRST_SECTION ""
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DEFINE_PER_CPU_SECTION(type, name, section) \
|
||||||
|
__attribute__((__section__(PER_CPU_BASE_SECTION section))) \
|
||||||
|
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
||||||
|
|
||||||
|
#define DEFINE_PER_CPU(type, name) \
|
||||||
|
DEFINE_PER_CPU_SECTION(type, name, "")
|
||||||
|
|
||||||
#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
|
#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
|
||||||
__attribute__((__section__(SHARED_ALIGNED_SECTION))) \
|
DEFINE_PER_CPU_SECTION(type, name, PER_CPU_SHARED_ALIGNED_SECTION) \
|
||||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name \
|
|
||||||
____cacheline_aligned_in_smp
|
____cacheline_aligned_in_smp
|
||||||
|
|
||||||
#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
|
#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
|
||||||
__attribute__((__section__(".data.percpu.page_aligned"))) \
|
DEFINE_PER_CPU_SECTION(type, name, ".page_aligned")
|
||||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
|
||||||
#else
|
|
||||||
#define DEFINE_PER_CPU(type, name) \
|
|
||||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
|
||||||
|
|
||||||
#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
|
#define DEFINE_PER_CPU_FIRST(type, name) \
|
||||||
DEFINE_PER_CPU(type, name)
|
DEFINE_PER_CPU_SECTION(type, name, PER_CPU_FIRST_SECTION)
|
||||||
|
|
||||||
#define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \
|
|
||||||
DEFINE_PER_CPU(type, name)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
|
#define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
|
||||||
#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var)
|
#define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var)
|
||||||
|
|
Loading…
Add table
Reference in a new issue