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

相关推荐
xiaoxiaoxiaolll1 小时前
多尺度建模新范式:当神经网络融入ABAQUS,复合材料仿真迎来“物理+数据“双引擎!
人工智能·深度学习·神经网络·学习
遇见尚硅谷6 小时前
C语言:20250805学习(文件预处理)
服务器·c语言·学习
wdfk_prog7 小时前
[Linux]学习笔记系列 -- [arm][debug]
linux·运维·arm开发·笔记·学习
wdfk_prog8 小时前
实战教程:从“对象文件为空“到仓库重生——修复 Git 仓库损坏全记录
大数据·网络·笔记·git·学习·elasticsearch·全文检索
小杨爱搞嵌入式8 小时前
【STM32】GPIO的输入输出
c语言·笔记·stm32·单片机·学习
皮蛋sol周8 小时前
嵌入式学习硬件(一)ARM体系架构
arm开发·学习·架构
无名工程师10 小时前
浅谈RNN被Transformer 取代的必然性
rnn·学习·transformer
Virgil13912 小时前
【YOLO学习笔记】YOLOv8详解解读
笔记·学习·yolo
学习网安的doro13 小时前
3a服务器的基本功能1之身份认证
服务器·网络·学习·安全·身份认证·ac
Forever Nore14 小时前
Nginx 学习
运维·学习·nginx