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

相关推荐
小雪崩5 小时前
嵌入式学习 day44:51单片机入门
嵌入式硬件·学习·51单片机
浔溺5 小时前
al+大数据每日学习笔记35
大数据·笔记·学习
kyrie_sakura6 小时前
MySQL学习笔记4 -- select的7大子句,子查询
笔记·学习·mysql
UIU1146 小时前
补码运算与整数溢出(上
学习·c#·补码·补码运算
ItJavawfc6 小时前
Linux驱动-RTC-RX8010集成-驱动开发-系统移植-移植RX8010驱动
驱动开发·rtc·8010rtc 驱动移植
词却7 小时前
OpenCV学习:人脸识别
人工智能·opencv·学习
xqqxqxxq7 小时前
AI Agent学习:第四章小结及八道思考题(李博杰《深入理解 AI Agent》第四章观后总结)
大数据·人工智能·学习
Willliam_william8 小时前
QEMU学习之路(13)— 在BusyBox中安装pciutils
学习
小白的后端世界8 小时前
数据分析基础学习
人工智能·学习·数据分析
人工智能培训8 小时前
从“捏泥人”到“造世界”:3D生成式AI的技术跃迁与产业落地
大数据·人工智能·学习·生活·ai写作