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

相关推荐
今晚努力早睡7 分钟前
渗透学习总结
学习·安全·网络安全
世人万千丶11 分钟前
Day 5: Flutter 框架 SQLite 数据库进阶 - 在跨端应用中构建结构化数据中心
数据库·学习·flutter·sqlite·harmonyos·鸿蒙·鸿蒙系统
初願致夕霞12 分钟前
实现具备C++11现代特性的STL——list篇(使用shared_ptr智能指针实现,解决了循环引用问题)
c++·list
丝斯201115 分钟前
AI学习笔记整理(53)——大模型之Agent 智能体开发
人工智能·笔记·学习
星火开发设计16 分钟前
循环结构进阶:while 与 do-while 循环的适用场景
java·开发语言·数据结构·学习·知识·循环
自由的好好干活16 分钟前
PLX9x5x_PCI_Driver 中断从注册到调用完整流程
驱动开发·ai编程
青衫码上行18 分钟前
Maven高级:分模块、聚合继承、多环境配置与私服搭建
java·学习·maven
开开心心_Every25 分钟前
无广告输入法推荐:内置丰富词库免费皮肤
服务器·前端·学习·决策树·edge·powerpoint·动态规划
科技林总28 分钟前
【系统分析师】4.4 网络工程
学习
Elias不吃糖9 小时前
Java Lambda 表达式
java·开发语言·学习