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

相关推荐
·醉挽清风·21 小时前
学习笔记—MySQL—库表操作
笔记·学习·mysql
白小沫1 天前
TortoiseSVN是什么?
学习
weixin_451431561 天前
【学习笔记】微博视频页面ajax请求与响应数据分析
笔记·学习·音视频
小麦嵌入式1 天前
FPGA入门(四):时序逻辑计数器原理与 LED 闪烁实现
linux·驱动开发·stm32·嵌入式硬件·fpga开发·硬件工程·dsp开发
清辞8531 天前
尾盘选股法程序开发学习初期
学习
Century_Dragon1 天前
让实训“活”起来——信息化综合实训考核平台助力汽车专业教学
学习
nashane1 天前
HarmonyOS 6学习:PanGesture手势驱动月亮半圆轨迹“滚动”术
学习·harmonyos 5
叶~小兮1 天前
K8S进阶核心综合学习笔记(持久化存储+特殊容器+调度管理)
笔记·学习·kubernetes
li星野1 天前
位运算 & 数学 & 高频进阶九题通关(Python + C++)
c++·python·学习·算法
y = xⁿ1 天前
Java并发八股学习日记
java·开发语言·学习