1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _TOOLS_LINUX_CONTAINER_OF_H 3 #define _TOOLS_LINUX_CONTAINER_OF_H 4 5 #ifndef container_of 6 /** 7 * container_of - cast a member of a structure out to the containing structure 8 * @ptr: the pointer to the member. 9 * @type: the type of the container struct this is embedded in. 10 * @member: the name of the member within the struct. 11 * 12 */ 13 #define container_of(ptr, type, member) ({ \ 14 const typeof(((type *)0)->member) * __mptr = (ptr); \ 15 (type *)((char *)__mptr - offsetof(type, member)); }) 16 #endif 17 18 #endif /* _TOOLS_LINUX_CONTAINER_OF_H */ 19