/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_CONTAINER_OF_H
#define _LINUX_CONTAINER_OF_H
#include <linux/build_bug.h>
#include <linux/stddef.h>
#define typeof_member(T, m) typeof(((T*)0 )->m)
/**
* 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 .
*
* WARNING : any const qualifier of @ ptr is lost .
* Do not use container_of ( ) in new code .
*/
#define container_of(ptr, type, member) ({ \
void *__mptr = (void *)(ptr); \
static_assert(__same_type(*(ptr), ((type *)0 )->member) || \
__same_type(*(ptr), void ), \
"pointer type mismatch in container_of()" ); \
((type *)(__mptr - offsetof(type, member))); })
/**
* container_of_const - cast a member of a structure out to the containing
* structure and preserve the const - ness of the pointer
* @ 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 .
*
* Always prefer container_of_const ( ) instead of container_of ( ) in new code .
*/
#define container_of_const(ptr, type, member) \
_Generic(ptr, \
const typeof(*(ptr)) *: ((const type *)container_of(ptr, type, member)),\
default : ((type *)container_of(ptr, type, member)) \
)
#endif /* _LINUX_CONTAINER_OF_H */
Messung V0.5 in Prozent C=91 H=100 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland