/*
*使用一个数组,来记录对于每个特定的CPU的变量的地址偏移量。
*有些CPU有自己独特的技术来实现。
*/
#ifndef __per_cpu_offset
extern unsigned long __per_cpu_offset[NR_CPUS];
#define per_cpu_offset(x) (__per_cpu_offset[x])
#endif
/*
*使用标准方式声明多CPU共存变量时,其实是声明了per_cpu__varname这个变量名的变量。
*/
#define per_cpu_var(var) per_cpu__##var
/*
* 加入偏移量来取得最终的某CPU变量的位置。
*
* S390有独有的技术来实现这种偏移功能。
*/
#ifndef SHIFT_PERCPU_PTR
#define SHIFT_PERCPU_PTR(__p, __offset) RELOC_HIDE((__p), (__offset))
#endif
/*
*RELOC_HIDE 使用ptr变量类型指针后加入相就的偏移量。
*/
#ifndef RELOC_HIDE
# define RELOC_HIDE(ptr, off) /
({ unsigned long __ptr; /
__ptr = (unsigned long)