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

相关推荐
Slow菜鸟5 分钟前
Docker 学习篇(三)| Docker安装指南(Linux版)
linux·学习·docker
Tutankaaa11 分钟前
知识竞赛软件SaaS版 vs 本地部署
人工智能·经验分享·笔记·学习
小仙女的小稀罕21 分钟前
培训要点写不完不会整理?规范培训转待办可这样操作
大数据·人工智能·学习·自然语言处理·语音识别
Wallace Zhang1 小时前
SimpleFOC源码学习10(v2.3.2) - 电流传感器CurrentSense.cpp与CurrentSense.h
驱动开发·stm32·学习·电流环·simplefoc·foc电机控制
进击的小头2 小时前
第21篇:TI DSP 寄存器级开发与库函数开发对比
驱动开发·单片机·嵌入式硬件
小仙女的小稀罕3 小时前
适合销售从业者会议整理使用的销售录音转任务工具
大数据·人工智能·学习·自然语言处理·语音识别
普通网友3 小时前
HTML5新增了哪些重要标签?多多学习也是成长的一部分
前端·学习·html5
高翔·权衡之境3 小时前
差错控制——噪声中如何保真?
网络·驱动开发·嵌入式硬件·物联网·软件工程·信息与通信
Emberone4 小时前
C++ list 详解:从入门到模拟实现,彻底搞懂双向链表
c++·list
南境十里·墨染春水4 小时前
linux学习进展 mysql数据库
linux·数据库·学习