+/**
+ * Macro for retrieve the pointer of a structure of 'type' having a field named 'field'
+ * of adress 'ptr'.
+ * @param type the type that has the 'field' (ex: "struct mystruct")
+ * @param field the name of the field within the structure 'type'
+ * @param ptr the pointer to an element 'field'
+ * @return the pointer to the structure that contains the 'field' at address 'ptr'
+ */
+#define CONTAINER_OF(type,field,ptr) ((type*)(((intptr_t)(ptr))-((intptr_t)&(((type*)NULL)->field))))
+
+/**
+ * Macro for retrieve the pointer of a structure of 'type' having a field named "xreq"
+ * of adress 'x'.
+ * @param type the type that has the field "xreq" (ex: "struct mystruct")
+ * @param x the pointer to the field "xreq"
+ * @return the pointer to the structure that contains the field "xreq" of address 'x'
+ */
+#define CONTAINER_OF_XREQ(type,x) CONTAINER_OF(type,xreq,x)