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

相关推荐
赵长辉1 小时前
AGI-rag学习:ChromaDB使用1,txt类型文档【20251016课复习】
python·学习·llm·agi
赵长辉1 小时前
AGI-rag学习:ChromaDB使用2,json类型文档,问答类内容,【20251016课复习】
学习·agi
小小星球之旅8 小时前
CompletableFuture学习
java·开发语言·学习
盐焗西兰花9 小时前
鸿蒙学习实战之路-ArkTS循环渲染_ForEach使用指南
学习·华为·harmonyos
巧克力味的桃子9 小时前
单链表 - 有序插入并输出学习笔记
笔记·学习
坚持学习前端日记10 小时前
软件开发完整流程详解
学习·程序人生·职场和发展·创业创新
Wokoo710 小时前
开发者AI大模型学习与接入指南
java·人工智能·学习·架构
小猪佩奇TONY11 小时前
OpenCL 学习(3)---- OpenCL 第一个程序
学习
守护安静星空11 小时前
live555学习笔记
笔记·学习
航Hang*11 小时前
第1章:初识Linux系统——第13节:总复习②
linux·笔记·学习·centos