diff --git a/include/common.h b/include/common.h index 889846d..4b6d226 100644 --- a/include/common.h +++ b/include/common.h @@ -171,4 +171,15 @@ #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +/** + * container_of - cast a member of a structure out to the containing structure + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) + #endif /* __COMMON_H_ */