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

相关推荐
Rocky40138 分钟前
在线测评系统---第n天
学习
qq_172805591 小时前
GO : cannot find module
学习·go
沐小侠2 小时前
软件设计师——软件工程学习笔记
笔记·学习·软件工程
GEO_JYB3 小时前
BERT家族进化史:从BERT到LLaMA,每一次飞跃都源于对“学习”的更深理解
学习·bert·llama
CC数分3 小时前
组长跟我说,她招人看重的是数据分析能力
学习·数据挖掘·数据分析·大学生·考证
网络安全大学堂3 小时前
【网络安全入门基础教程】网络安全零基础学习方向及需要掌握的技能
网络·学习·安全·web安全·网络安全·黑客
moxiaoran57535 小时前
Python学习笔记--使用Django修改和删除数据
笔记·python·学习
@ZzHhXx5 小时前
嵌入式学习---(单片机)
单片机·嵌入式硬件·学习
chillxiaohan6 小时前
Docker学习记录
学习·docker·容器
m0_571372826 小时前
关于嵌入式学习——嵌入式硬件3
嵌入式硬件·学习