内核学习——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 分钟前
AI学习-LangChain实战-多模态识别agent
人工智能·学习·langchain
逆境不可逃2 分钟前
Hello-Agents 第二部分-第六章:框架开发实践
java·人工智能·分布式·学习·架构·rabbitmq
YangYang9YangYan6 分钟前
2026学习数据分析对产品经理的价值
学习·数据分析·产品经理
淞綰8 分钟前
c语言的练习-字符串的练习-寻找最长连续字符以及出现次数
c语言·数据结构·学习·算法·c语言的练习
玄米乌龙茶12327 分钟前
项目开发学习笔记
笔记·学习
闫记康1 小时前
Linux学习day3
linux·服务器·学习
阳光九叶草LXGZXJ2 小时前
达梦数据库-学习-52-DmDrs参数介绍(Manager模块)
linux·运维·数据库·sql·学习
吃好睡好便好2 小时前
在Matlab中绘制峰值图
开发语言·学习·算法·matlab·信息可视化
珞瑜·2 小时前
基于Matlab生成黑色火柴人运球 + 起跳 + 投篮动作
学习·matlab
AI原来如此2 小时前
[特殊字符]2026AI Agent入门学习路径
学习·ai·大模型·ai编程