1 container_of(ptr, type, member)
地址为ptr的成员member对应的type类型的结构的地址。
即 type S; 有 &(s.member ) == ptr;
那么有ptr,如何获得S
S = container_of(ptr, type, member)
- define container_of(ptr, type, member) ({ \
-
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
-
(type *)( (char *)__mptr - offsetof(type,member) );})
2. offset
man 3: offsetof - offset of a structure member
3. offset
- #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
阅读(410) | 评论(0) | 转发(0) |