summaryrefslogtreecommitdiffstats
path: root/include/c.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/c.h')
-rw-r--r--include/c.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/include/c.h b/include/c.h
index c8bcb375b..a240f4f6c 100644
--- a/include/c.h
+++ b/include/c.h
@@ -129,10 +129,16 @@
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif
+/*
+ * 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.
+ */
#ifndef container_of
-#define container_of(ptr, type, member) __extension__ ({ \
- const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
+#define container_of(ptr, type, member) __extension__ ({ \
+ void *__mptr = (void *)(ptr); \
+ ((type *)(__mptr - offsetof(type, member))); })
#endif
#ifndef HAVE_PROGRAM_INVOCATION_SHORT_NAME