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

相关推荐
华舞灵瞳7 小时前
学习FPGA(六)锁相环
学习·fpga开发
小裕哥略帅7 小时前
PMP学习笔记--环境
笔记·学习
Darkershadow8 小时前
python学习之串口通信
python·学习
BullSmall9 小时前
普罗米修斯 的学习路径及建议
学习·prometheus
happyjoey2179 小时前
28天立创实力派开发板学习记录part1——DAY1-DAY8
学习
非凡ghost11 小时前
CoolUtils PDF Combine(PDF合并工具)
windows·学习·pdf·软件需求
阿W呀11 小时前
【光的偏振与光功率 / 能量测量学习笔记】
学习
Vect__11 小时前
进程控制详解
linux·驱动开发
allan bull12 小时前
在节日中寻找平衡:圣诞的欢乐与传统节日的温情
人工智能·学习·算法·职场和发展·生活·求职招聘·节日
wdfk_prog12 小时前
[Linux]学习笔记系列 -- [fs]fs-writeback
linux·笔记·学习