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

相关推荐
yi.Ist14 小时前
2025CCPC郑州邀请赛
c++·学习·算法·acm
HERR_QQ14 小时前
端到端课程自用 2课 动静态感知decoder
笔记·学习·自动驾驶
Keep Running *14 小时前
Django_学习笔记
笔记·学习·django
今天你TLE了吗14 小时前
LLM到Agent&RAG——AI概念概述 第五章:Skill
人工智能·笔记·后端·学习
不做无法实现的梦~15 小时前
显示屏和显卡驱动问题完整解决教程---ubuntu22.04安装显卡驱动解决显示屏黑屏幕问题
linux·学习
Swilderrr15 小时前
学术研读报告:Mem0 面向生产级 AI 智能体的可扩展长期记忆架构
人工智能·学习
乙酸氧铍15 小时前
【imx6ul 学习笔记】移植ubuntu 20.04系统
笔记·学习·ubuntu
鱼鳞_15 小时前
Java学习笔记_Day37(网络编程)
java·网络·笔记·学习
Byron__15 小时前
AI学习_03_LangChain_RAG基础概念
人工智能·学习·langchain
三品吉他手会点灯16 小时前
C语言学习笔记 - 8.C概述 - 学习的目标
c语言·笔记·学习