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

相关推荐
z200509307 小时前
【linux学习】linux的基本指令
linux·学习
AOwhisky8 小时前
Docker 学习笔记:镜像分发、容器运行与资源限制
笔记·学习·docker
MediaTea8 小时前
人工智能通识课:机器学习之无监督学习
人工智能·深度学习·学习·机器学习
Fanfanaas9 小时前
2026 年 华中杯 数学建模竞赛 A 题 问题一个人解析
学习·数学建模
霑潇雨10 小时前
Spark学习基础转换算子案例(单词计数(WordCount))
java·大数据·分布式·学习·spark·maven
eastyuxiao11 小时前
数字孪生教程(软件篇)官方学习路径
大数据·人工智能·学习·数字孪生
小徐学编程-zZ11 小时前
拆解业务逻辑分析
数据库·学习
知识分享小能手11 小时前
R语言入门学习教程,从入门到精通,R语言获取数据 (7)
开发语言·学习·r语言
木木_王11 小时前
嵌入式学习 | STM32裸板驱动开发(Day01)入门学习笔记(超详细完整版|点灯实验 + 库函数代码 + 原理全解)
linux·驱动开发·笔记·stm32·学习
JAVA面经实录91711 小时前
Java架构师最终完整版学习路线图
java·开发语言·学习