1 /* Public domain. */ 2 3 #ifndef _LINUX_CONTAINER_OF_H 4 #define _LINUX_CONTAINER_OF_H 5 6 #define container_of(ptr, type, member) ({ \ 7 const __typeof( ((type *)0)->member ) *__mptr = (ptr); \ 8 (type *)( (char *)__mptr - offsetof(type,member) );}) 9 #define container_of_const(p, t, m) container_of(p, t, m) 10 11 #define typeof_member(s, e) typeof(((s *)0)->e) 12 13 #endif 14