在查看驱动代码时,经常看到container_of函数,经查资料总结如下:
container_of(ptr, type,member)函数的实现包括两部分:
1. 判断ptr 与 member 是否为同一类型。
2. 计算size大小,结构体的起始地址 = (type *)((char *)ptr - size) (注:强转为该结构体指针)。container_of()的作用就是通过一个结构变量中一个成员的地址找到这个结构体变量的首地址。
container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型、成员。
本文详细解析了container_of函数的工作原理,包括如何判断指针与成员的类型一致性,以及如何计算结构体的起始地址。通过这个函数,可以实现在已知结构体成员地址的情况下,找到整个结构体的首地址。

4万+

被折叠的 条评论
为什么被折叠?



