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

相关推荐
芋只因13 小时前
天机学堂学习笔记
java·笔记·学习
员宇宙14 小时前
k8s学习笔记
笔记·学习·kubernetes
Lochor Lee14 小时前
C++学习笔记——输入输出的格式
c++·笔记·学习
babe小鑫14 小时前
2026数字营销专业人士学习数据分析的必要性
学习·数据挖掘·数据分析
吃好睡好便好14 小时前
在Matlab中绘制二维等高线图
开发语言·人工智能·学习·算法·matlab
xian_wwq14 小时前
【学习笔记】探讨大模型应用安全建设系列——顶层规划:如何推动公司级大模型安全建设-1
笔记·学习·安全·ai
Lucky_ldy15 小时前
C语言学习:自定义类型-结构体
c语言·开发语言·学习
2301_7926748615 小时前
java学习(day34)
java·开发语言·学习
lizhihai_9915 小时前
股市学习心得-量比的作用
大数据·人工智能·学习
山岚的运维笔记15 小时前
Bash 专业人员笔记 -- 第 11 章:`true`、`false` 和 `:` 命令
linux·运维·服务器·开发语言·笔记·学习·bash