summaryrefslogtreecommitdiffstats
path: root/include/common.h
diff options
context:
space:
mode:
authorSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-10-11 15:59:01 +0200
committerSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-10-11 15:59:01 +0200
commit996eb579387de93508f44205ac0594975076fb4e (patch)
treeb5f5f4c19cca225e3ad2ebf88b3154ae0b6accd1 /include/common.h
parent7a0d5c47c952b8b163fbad1575c73dc24f189333 (diff)
downloadbarebox-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.h11
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_ */