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

相关推荐
JeffDingAI44 分钟前
【Datawhale学习笔记】NLP初级分词技术
笔记·学习·自然语言处理
优雅的潮叭8 小时前
c++ 学习笔记之 shared_ptr
c++·笔记·学习
am心8 小时前
学习笔记-用户下单
笔记·学习
微露清风9 小时前
系统性学习C++-第二十二讲-C++11
java·c++·学习
进阶小白猿9 小时前
Java技术八股学习Day20
java·开发语言·学习
renhongxia110 小时前
学习基于数字孪生的工艺参数优化
学习
gjf05_0510 小时前
人该怎样活着呢?版本68.6
学习
GISer_Jing10 小时前
AI Agent 智能体的“深度思考”与“安全防线”
人工智能·学习·安全·aigc
我命由我1234512 小时前
充血模型与贫血模型
java·服务器·后端·学习·架构·java-ee·系统架构
时间会给答案scidag12 小时前
Spring AI Alibaba 学习day01
人工智能·学习·spring