内核container_of宏

container_of 宏:

1
2
3
4
5
6
struct demo_struct {
type1 member1;
type2 member2;
type3 member3;
type4 member4;
};

同时,在另一个地方,获得了变量demo中的某一个域成员变量的指针,比如:
type3 *memp=xxx
此时:
struct demo_struct *demop = container_of(memp, struct demo_struct, member3);

说明:
member3 是结构体demo_struct的一个成员名;
mempmember3的指针。
返回值是指向demo_struct结构的指针。

由此,container_of实现了:根据一个结构体变量中的一个域成员变量的指针,来获取指向整个结构体变量的指针。