#define swap(a, b) ({typeof(a) _a = a; (a) = (b); (b) = _a;})
#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) ({ \
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+#endif
+
#define ARRAY_LEN(array) (sizeof(array) / sizeof((array)[0]))
#define ZERO_ARRAY(array) memset(array, 0, sizeof(array))