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

相关推荐
河铃旅鹿10 分钟前
Android开发-java版:BroadcastReceiver广播
android·笔记·学习
洋洋的笔记34 分钟前
小白银行测试初步了解(四)信用卡
经验分享·笔记·学习
im_AMBER40 分钟前
HTTP概述 01
javascript·网络·笔记·网络协议·学习·http
Tonya431 小时前
测开学习DAY27
学习
笨鸟笃行1 小时前
百日挑战——单词篇(第二十天)
学习
Main. 241 小时前
从0到1学习Qt -- 常见控件QWidget(二)
qt·学习
Lynnxiaowen3 小时前
今天我们开始学习Linux自动化运维Ansible基础
linux·运维·学习·自动化·云计算·ansible
YJlio3 小时前
VMMap 学习笔记(8.2):启动 VMMap、选择目标进程、权限要求与首次快照流程
服务器·笔记·学习
蓝桉~MLGT3 小时前
Python学习历程——模块
开发语言·python·学习
liuhuapeng03043 小时前
GetMapping自动截取List<String>字符
数据结构·windows·list