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

相关推荐
程序员JerrySUN2 小时前
驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
linux·开发语言·驱动开发·嵌入式硬件
yuhouxiyang6 小时前
学习海康VisionMaster之路径提取
学习·计算机视觉
PLUS_WAVE8 小时前
CogCoM: A Visual Language Model with Chain-of-Manipulations Reasoning 学习笔记
学习·语言模型·大模型·cot·vlm·推理模型·reasoning
绵绵细雨中的乡音8 小时前
Linux进程学习【环境变量】&&进程优先级
linux·运维·学习
贺函不是涵8 小时前
【沉浸式求职学习day27】
学习
努力奋斗的小杨8 小时前
学习MySQL的第十二天
数据库·笔记·学习·mysql·navicat
枫叶20009 小时前
OceanBase数据库-学习笔记1-概论
数据库·笔记·学习·oceanbase
你可以叫我仔哥呀9 小时前
k8s学习记录(五):Pod亲和性详解
学习·容器·kubernetes
RaLi和夕9 小时前
单片机学习笔记9.数码管
汇编·笔记·单片机·嵌入式硬件·学习
见青..9 小时前
【学习笔记】文件包含漏洞--本地远程包含、伪协议、加密编码
前端·笔记·学习·web安全·文件包含