| #ifndef _LINUX_STDDEF_H | 
 | #define _LINUX_STDDEF_H | 
 |  | 
 | #undef NULL | 
 | #if defined(__cplusplus) | 
 | #define NULL 0 | 
 | #else | 
 | #define NULL ((void *)0) | 
 | #endif | 
 |  | 
 | #undef offsetof | 
 | #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) | 
 |  | 
 |  | 
 | /** | 
 |  * 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) );}) | 
 |  | 
 | /* | 
 |  * Check at compile time that something is of a particular type. | 
 |  * Always evaluates to 1 so you may use it easily in comparisons. | 
 |  */ | 
 | #define typecheck(type,x) \ | 
 | ({	type __dummy; \ | 
 | 	typeof(x) __dummy2; \ | 
 | 	(void)(&__dummy == &__dummy2); \ | 
 | 	1; \ | 
 | }) | 
 |  | 
 |  | 
 | #endif |