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

相关推荐
AI云海15 分钟前
利用好手机这个工具-碎片化学习
学习
β添砖java3 小时前
2025最新快速构建企业级虚拟专用网络环境学习笔记
笔记·学习
WZF-Sang7 小时前
网络基础——2
服务器·网络·c++·学习·网络编程·php
ywl4708120878 小时前
常用的集合类有哪些?比如List如何排序?
list·java基础
心中有国也有家8 小时前
E-Brufen 技术选型全景:Flutter + 鸿蒙 + Hive CE
hive·hadoop·学习·flutter·华为·harmonyos
New农民工9 小时前
射频芯片学习-ExpressLRS 对频流程分析
学习
Tom@敲代码9 小时前
js学习笔记-01
javascript·笔记·学习
辞旧 lekkk10 小时前
【Qt】 系统相关:事件与定时器
开发语言·qt·学习·萌新
绝世番茄10 小时前
鸿蒙原生ArkTS布局方式之List+swipeAction侧滑菜单深度解析
华为·list·harmonyos·鸿蒙
zzzll111110 小时前
如何学习AI Agent?
java·人工智能·学习·程序员·大模型