内核学习——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():判断是否为空

相关推荐
99乘法口诀万物皆可变8 分钟前
Simscape 学习路径图:从入门到精通的多物理域仿真指南
学习
wuxinyan12314 分钟前
工业级大模型学习之路015:RAG零基础入门教程(第十一篇):系统重构与代码规范化
人工智能·python·学习·重构·rag
网络与设备以及操作系统学习使用者16 分钟前
ARP报文保护触发与解决详解
运维·网络·学习·华为
wuxinyan12319 分钟前
工业级大模型学习之路014:RAG零基础入门教程(第十篇):系统性能与资源优化
人工智能·学习·rag
小郑加油1 小时前
python学习Day14:实际应用——pandas的筛选与保存
python·学习·pandas
Genevieve_xiao1 小时前
【xjtuse】【数学建模】课程笔记(六)线上学习
笔记·学习·数学建模
智者知已应修善业2 小时前
【74ls138+74ls00传送带故障报警】2024-1-9
驱动开发·经验分享·笔记·硬件架构·硬件工程
暖阳之下2 小时前
学习周报四十五
学习
sealaugh322 小时前
react native(学习笔记第五课) 英语打卡微应用(4)- frontend的列表展示
笔记·学习·react native
不怕犯错,就怕不做2 小时前
linux的notifier_block内核通知链
linux·驱动开发·嵌入式硬件