DEFINE_PER_CPU定义指针数组结构
问题描述:
以下定义在Linux内核中使用DEFINE_PER_CPU时工作:DEFINE_PER_CPU定义指针数组结构
DEFINE_PER_CPU(int, x);
DEFINE_PER_CPU(char[10], c);
DEFINE_PER_CPU(struct foo, f);
我现在要定义一个指针数组使用相同的结构。
假设该结构被称为struct foo
,并且将被命名为bar
。我然后尝试:
DEFINE_PER_CPU(struct *foo[100], bar);
但是,它会导致编译错误。我也尝试了其他一些排列,但无法使其工作。任何人都可以指出什么会起作用,为什么?
我明白一个解决方法可能是创建一个存储指针的包装器结构,它可以被上述方法之一使用,但我想知道如何使它与指针一起工作。
编辑:结构foo也不工作。
答
以下工作:
DEFINE_PER_CPU(__typeof__(struct foo *)[100], bar);
参考文献:
[1] Linux kernel header含有DEFINE_PER_CPU
定义。
[2] GCC documentation of typeof
。