Linux内核——container_of

博客探讨了Linux内核中如何通过结构体的一个成员来获取整个结构体的地址。讲解了container_of宏的工作原理,它利用offsetof宏计算成员在结构体内的偏移量,从而实现‘以小博大’的效果。offsetof宏通过将0转换为指定类型的指针,然后获取成员的地址并计算偏移量。这些内核编程技巧对于理解底层系统编程至关重要。

在驱动过程中,一直有一个做法,就是通过,我知道的一个结构体的一个成员,那么我就可以拿到整个结构体的数据
我们也称为以小博大。
就比如字符设备驱动过程中的input_dev input_handler 和evdev_handl 这三个结构体就天天在那博来博去的。
乍一想:就是通过,我知道的一个结构体的一个成员,那么我就可以拿到整个结构体的数据。
这肯定没问题啊,我都知道一个成员了,那拿到整个结构体的数据这不是易如反掌吗?

但是真的让你去操作你会怎么操作



内核是定义一个宏去完成以小博大

container_of:
#define container_of(ptr, type, member) ({
     
               
        const typeof(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值