Linux 内核中container_of的理解

在linux kernel中, container_of的定义如下:

其作用是根据结构体类型、它的一个成员地址及该成员名称来获取该结构体的起始地址。 其中, typeof 是GNU C对标准C的一个扩展,用于获取指定变量的数据类型。 此外用到了另外一个宏定义:

offsetof 获取结构体成员在结构体内部的偏移。它的实现很巧妙,即将0x0位置当做一个TYPE类型的结构体,此时结构体的成员地址也就是其结构体内部地址了。

理解了typeof 和 offsetof, container_of的实现也就很容易理解了。 精巧高效的实现,不得不佩服!

图片来源于:http://www.embedu.org/Column/Column433.htm

原文地址:https://www.cnblogs.com/mush0m/p/3560555.html