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

相关推荐
零K沁雪25 分钟前
Linux 内核中与网络地址相关的函数
linux·内核
Slow菜鸟2 小时前
AI学习篇(三) | AI效率工具指南(2026年)
人工智能·学习
qcwl663 小时前
深入理解Linux进程与内存 学习笔记#4
笔记·学习
蒸蒸yyyyzwd3 小时前
后端学习笔记 day4
linux·笔记·学习
笨笨饿5 小时前
20_Git 仓库使用手册 - 初学者指南
c语言·开发语言·嵌入式硬件·mcu·学习
零K沁雪6 小时前
Linux 内核遍历宏介绍
linux·内核
cqbelt6 小时前
Python 并发编程实战学习笔记
笔记·python·学习
智算菩萨6 小时前
【论文复现】Applied Intelligence 2025:Auto-PU正例无标签学习的自动化实现与GPT-5.4辅助编程实战
论文阅读·python·gpt·学习·自动化·复现
老神在在0016 小时前
【Selenium 自动化精讲】浏览器弹窗与登录界面的本质区别 & 实操指南
javascript·学习·selenium·测试工具·自动化
·醉挽清风·7 小时前
学习笔记—Linux—信号阻塞&信号捕捉
linux·笔记·学习