list_entry()
list_entry
是 Linux 内核链表操作中常用的宏之一,它的作用是通过链表节点指针获取包含该节点的结构体指针。
解析
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)
-
参数说明:
ptr
:指向链表节点的指针。type
:包含该节点的结构体类型。member
:链表节点在结构体中的成员名称。
-
核心思想: 它通过
container_of
宏(通常是 GCC 提供的一个实现)根据结构体成员的地址推导出整个结构体的地址。
container_of
的作用
container_of
通常的实现如下:
#define container_of(ptr, type, member) \