Linux内核概念:Per-CPU变量与CPU掩码详解
1. Per-CPU变量
Per-CPU变量是Linux内核的一个重要特性,每个处理器核心都拥有该变量的独立副本。
1.1 创建Per-CPU变量
内核提供了DEFINE_PER_CPU宏来创建Per-CPU变量,其定义如下:
#define DEFINE_PER_CPU(type, name) \ DEFINE_PER_CPU_SECTION(type, name, "")例如,创建一个整数类型的Per-CPU变量:
DEFINE_PER_CPU(int, per_cpu_n)DEFINE_PER_CPU会调用DEFINE_PER_CPU_SECTION宏:
#define DEFINE_PER_CPU_SECTION(type, name, sec) \ __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES \ __typeof__(type) name #define __PCPU_ATTRS(sec) \ __percpu __