diff options
author | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-10-11 15:59:01 +0200 |
---|---|---|
committer | Sascha Hauer <sha@octopus.labnet.pengutronix.de> | 2007-10-11 15:59:01 +0200 |
commit | 996eb579387de93508f44205ac0594975076fb4e (patch) | |
tree | b5f5f4c19cca225e3ad2ebf88b3154ae0b6accd1 /include/common.h | |
parent | 7a0d5c47c952b8b163fbad1575c73dc24f189333 (diff) | |
download | barebox-996eb579387de93508f44205ac0594975076fb4e.tar.gz barebox-996eb579387de93508f44205ac0594975076fb4e.tar.xz |
add container_of macro. Needed for list implementation
Diffstat (limited to 'include/common.h')
-rw-r--r-- | include/common.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/common.h b/include/common.h index 889846dbce..4b6d226e68 100644 --- a/include/common.h +++ b/include/common.h @@ -171,4 +171,15 @@ int run_shell(void); #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_ */ |