函数原型:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
内核提供的这个宏可以通过结构体中任何一个成员地址反推出它所在结构变量在内存中的首地址。
用法示例:
struct myvar{
int x;
int z ;
struct work_struct work; //内核共享队列结构体
int y;
} a,b;
container_of(&a.z, struct myvar, z) ------->这个返回变量a的地址,即&a
container_of(&b.work, struct myvar, work)-------------->这个返回变量b的地址,即&b
在解释这个