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

相关推荐
派大鑫wink5 分钟前
网络工程师入门学习第二篇:TCP/IP协议与路由协议深入
网络·学习·tcp/ip
AI360labs_atyun19 分钟前
呼吸疾病+AI,人工智能正在改变慢病治疗
人工智能·科技·学习·ai
NaturalHarmonia31 分钟前
【Go】sync package官方示例代码学习
开发语言·学习·golang
森焱森40 分钟前
GD32F4 DSP
linux·c语言·arm开发·驱动开发·嵌入式硬件
testpassportcn43 分钟前
CompTIA A+ 220-1201 認證介紹|最新版本 A+ Core 1 220-1201 考試完整指南
网络·学习·改行学it
d111111111d1 小时前
C语言中static修斯局部变量,全局变量和函数时分别由什么特性
c语言·javascript·笔记·stm32·单片机·嵌入式硬件·学习
染指11101 小时前
12.Windows驱动-R3到R0的系统调用
驱动开发·windows驱动
非凡ghost1 小时前
Xournal++(PDF文档注释工具) 中文绿色版
学习·pdf·生活·软件需求
贾亚超1 小时前
【s3c2440】【驱动篇】字符设备驱动
linux·驱动开发
请你喝好果汁6411 小时前
统一维度参考文章
学习