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

相关推荐
快乐的学习17 分钟前
开源相关术语及提交commit关键字总结
驱动开发·开源
roman_日积跬步-终至千里3 小时前
【强化学习基础(2)】被动强化学习:学习价值函数
学习
逢考必过@k3 小时前
6级550学习ing
学习
陈天伟教授5 小时前
基于学习的人工智能(7)机器学习基本框架
人工智能·学习
Z***G4796 小时前
网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
爬虫·学习·计算机外设
hhwyqwqhhwy6 小时前
linux 驱动开发相关
linux·驱动开发
我命由我123457 小时前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
DKPT7 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
Main. 248 小时前
从0到1学习Qt -- 常见控件之显示类控件
qt·学习
e***19358 小时前
爬虫学习 01 Web Scraper的使用
前端·爬虫·学习