内核学习——1、list_head

双向循环链表:list_head

头节点head是不使用的:

struct list_head {

struct list_head *next, *prev;

};

结构体中没有数据域,所以一般把list_head嵌入到其他结构中使用

struct file_node {

char c;

struct list_head node;

};

此时,list_head就作为它父结构体中的一个成员了,我们知道list_head的地址(指针)时,就可以通过list_entry来获得它的父结构的地址

#define list_entry(ptr, type, member) container_of(ptr,type,member)

通过结构体成员地址来求得结构体地址:ptr是所求结构体中的list_head成员指针,type是所求结构体类型,member是结构体list_head成员名

list_for_each:遍历双向链表

LIST_HEAD():生成双向链表头节点

list_add():插入操作

list_del():删除操作

list_empty():判断是否为空

相关推荐
兔子不吃草~2 小时前
Transformer学习记录与CNN思考
学习·cnn·transformer
与己斗其乐无穷3 小时前
C++学习记录(8)list
学习
有谁看见我的剑了?3 小时前
k8s-容器探针和生命周期回调学习
学习·容器·kubernetes
摇滚侠3 小时前
java语言中,list<String>转成字符串,逗号分割;List<Integer>转字符串,逗号分割
java·windows·list
sukalot4 小时前
window显示驱动开发—显示适配器的子设备
驱动开发
我星期八休息4 小时前
深入理解跳表(Skip List):原理、实现与应用
开发语言·数据结构·人工智能·python·算法·list
掘根4 小时前
【CMake】List
windows·microsoft·list
芜狄5 小时前
UCOSIII移植——学习笔记1
笔记·嵌入式硬件·学习·stm32f103rct6·ucosiii实时操作系统
Cellular_Modem笔记6 小时前
5G NR-NTN协议学习系列:NR-NTN介绍(2)
学习·5g·ntn
ooo-p7 小时前
FPGA学习篇——Verilog学习Led灯的实现
学习·fpga开发