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

相关推荐
xiaoxiaoxiaolll15 分钟前
Light: Sci & Appl. | 子阵列栅控HEMT超表面:太赫兹波前同时实现高速调制与物理层逻辑
学习
爱喝水的鱼丶29 分钟前
SAP-ABAP:SAP 与 ABAP 关联逻辑与入门路径:业务×开发的协作指南
服务器·前端·数据库·学习·sap·abap
蓝桉~MLGT39 分钟前
中级软考(软件工程师)常用错题整理(不间断更新)
学习·中级软考
飞霄不推销1 小时前
SPI驱动学习(2)
学习
GISer_Jing1 小时前
考研|考公GIS:近5年地理信息产业数据全链路核心要点(背诵版)
学习·考研·arcgis
小猪写代码2 小时前
Linux 驱动开发
驱动开发
坚持是一种态度2 小时前
软考高级架构师选择题知识点高频100
学习·架构师·软考·考试
yxc_inspire2 小时前
25年CCPC福建邀请赛补题
学习·算法
Slow菜鸟2 小时前
Skill 学习篇(十)| 编排框架 · 五大编排框架 · 全方位决策指南
学习
倒霉熊dd2 小时前
Python学习(第一部分 语法与数据结构/核心基础)
大数据·python·学习·pip