在内核中会有很多比较奇怪的编码,本文打算总结一下自己在阅读内核代码的时候遇到的比较奇怪的编码。慢慢加。内核不限于linux或FreeBSD。
#define __pcpu_type(name) __typeof(((struct pcpu *)0)->name)
这行代码中将0地址强行转换成一个struct结构来获得其中的某一项的类型。
(struct pcpu*) 0,这句话相当于给struct pcpu 结构分配在0地址处,这样就可以通过地址来获得结构中的数据,也就是0->name.
在内核中会有很多比较奇怪的编码,本文打算总结一下自己在阅读内核代码的时候遇到的比较奇怪的编码。慢慢加。内核不限于linux或FreeBSD。
#define __pcpu_type(name) __typeof(((struct pcpu *)0)->name)
这行代码中将0地址强行转换成一个struct结构来获得其中的某一项的类型。
(struct pcpu*) 0,这句话相当于给struct pcpu 结构分配在0地址处,这样就可以通过地址来获得结构中的数据,也就是0->name.