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

相关推荐
MarkHD21 小时前
智能体在车联网中的应用:第52天 大语言模型作为高级规划器或世界模型:重塑自动驾驶的感知与决策
学习·安全
week_泽21 小时前
第7课:管理长期记忆的关键架构决策 - 学习笔记_7
java·笔记·学习·ai agent
佑白雪乐21 小时前
<Python基础第2集>速通list+tuple+string+序列+set+dict容器
windows·python·list
FAFU_kyp21 小时前
Rust 所有权(Ownership)学习
开发语言·学习·rust
2501_9423264421 小时前
科学开发大脑潜能,提升学习效率
学习
deng-c-f21 小时前
Linux C/C++ 学习日记(60):redis(一):基本介绍
学习
仙女修炼史1 天前
How transferable are features in deep neural networks
人工智能·深度学习·学习
hhcccchh1 天前
学习vue第十二天 Vue开发工具链指南:从手工作坊到现代化工厂
前端·vue.js·学习
如果你想拥有什么先让自己配得上拥有1 天前
教师资格证考试梳理
学习·总结
TAICHIFEI1 天前
Hugging Face 的 Transformers库
人工智能·深度学习·学习·自然语言处理