linux container 作用,了解Linux内核中的container_of宏

本文详细解析了Linux内核中的container_of宏,它用于从结构体成员指针反向获取整个结构体的指针。讨论了如何避免在使用中混淆名称空间,并强调了正确计算成员偏移量的重要性。该技术常用于驱动开发和内核编程,有助于高效地操作内存布局复杂的结构体。
摘要由CSDN通过智能技术生成

您的用法示例container_of(dev, struct wifi_device, dev);可能会误导您,因为您在此处混合了两个名称空间。

虽然dev示例中的第一个引用指针的名称,但是第二个dev引用结构成员的名称。

这种混淆很可能激起所有这些头痛。实际上,member引用中的参数是指在容器结构中赋予该成员的名称。

以这个容器为例:

struct container {

int some_other_data;

int this_data;

}

还有一个指向您要使用该宏int *my_ptr的this_data成员的指针,该指针可以struct container *my_container通过以下方式获得:

struct container *my_container;

my_container = container_of(my_ptr, struct container, this_data);

考虑this_data到结构开头的偏移量对于获取正确的指针位置至关重要。

实际上,您只需this_data要从指针中减去成员的偏移量my_ptr即可获得正确的位置。

这正是宏的最后一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值