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

相关推荐
wdfk_prog25 分钟前
[Linux]学习笔记系列 -- [kernel][time]timer
linux·笔记·学习
hmbbcsm1 小时前
python学习之路(六)
学习
Wu Liuqi1 小时前
【大模型学习】第一章:自然语言处理(NLP)核心概念
人工智能·学习·自然语言处理·大模型·大模型转行
CodeLongBear1 小时前
从Java后端到Python大模型:我的学习转型与规划
java·python·学习
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 23--数据驱动--参数化处理 Yaml 文件
python·学习·测试工具·pytest
DeeplyMind2 小时前
第10章:中断处理-6:Implementing a Handler
linux·驱动开发
s11show_1632 小时前
ruoyi-app学习路线
学习
安全系统学习2 小时前
自学网络安全学习的误区和陷阱
数据库·学习·安全·web安全·网络安全·安全架构
领创工作室2 小时前
Linux基础指令-Linux学习笔记(1)
linux·笔记·学习
清钟沁桐2 小时前
mlir 编译器学习笔记之五 -- 开发避坑
笔记·学习·mlir