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

相关推荐
谷歌开发者11 小时前
Web 开发指向标 | Chrome 开发者工具学习资源 (一)
前端·chrome·学习
本郡主是喵13 小时前
用 TypeScript 进行 Truffle 测试
学习·区块链
武文斌7714 小时前
复习总结最终版:单片机
linux·单片机·嵌入式硬件·学习
sealaugh3215 小时前
AI(学习笔记第十二课) 使用langsmith的agents
人工智能·笔记·学习
QZ_orz_freedom15 小时前
学习笔记--事务管理
笔记·学习
im_AMBER16 小时前
Web 开发 30
前端·笔记·后端·学习·web
试试勇气17 小时前
Linux学习笔记(八)--环境变量与进程地址空间
linux·笔记·学习
蒙奇D索大17 小时前
【数据结构】考研数据结构核心考点:平衡二叉树(AVL树)详解——平衡因子与4大旋转操作入门指南
数据结构·笔记·学习·考研·改行学it
andwhataboutit?18 小时前
Docker Compose学习
学习·docker·容器
im_AMBER18 小时前
数据结构 04 栈和队列
数据结构·笔记·学习