container_of函数在linux内核中定义如下:
相信大家已经根据英文解释看懂了这个函数的用法
*三个参数分别是:1.该成员变量的指针 2.要寻找的结构体的类型 3.这个成员变量在结构体中的名字
通俗点说,此函数的作用就是通过结构体中的成员变量来找到结构体的首地址,也就是结构体的指针。
并且这个函数可以一层层往上找,接下来上实例看一下:
目标:通过work成员变量找到irq_keydesc这个结构体指针, 已知:work指针
第一层结构体如下:
因而写出以下语句,参数含义分别是(work指针, 结构体类型, " work "这个名字)
找到第一个被实例化的irq_keydesc类型结构体指针指针key,接下来通过key指针找到第二层结构体的指针:
得到以下语句,参数含义分别是(成员key指针, 要求的结构体类型, irqkey这个名字
最后得到了被实例化的imx6uirq_device类型结构体指针dev, 经过运行验证,结果正确。
linux内核中使用此函数非常的多!