内核数据结构之container_of
container_of
宏用于根据结构体某个成员的地址来获取结构体自身的地址,获得结构体自身地址之后可以访问该结构其他字段,定义在<linux/kernel.h>
中。
offsetof
宏用于计算结构体成员到结构体自身地址之间的偏移,定义在<linux/stddef.h>
中。
pragma pack预定义指令用于限制结构体成员的最大对齐数,结构体的对齐数取决于结构体成员的最大对齐数,结构体成员的对齐数取决于其自身大小和编译器设置的参数。
__attribute__((packed))
和__attribute__((aligned(n)))
分别用于GCC不设置对齐和设置以n
字节对齐。