container_of分析

内核源码中存在这么一个宏container_of
用于从一个结构体的成员指针获取结构体的指针。
如:

1
2
3
4
struct my{
	int a;
	int b;
};

在此如果知道成员b的指针可用container_of函数来获取包含b的my结构体的指针。
在此列中使用如以知b的指针pb:

1
2
struct my *getmy;
getmy = container_of(pb,struct my,b);

这样就获取到了my的指针。
这个宏的工作原理比较简单,下面简单介绍下其工作原理和实际代码。
[阅读全文] »