在查看驱动代码时,经常看到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分别代表指针、类型、成员。