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

相关推荐
辣知9 分钟前
辣知·化智80 《道德经》和光同尘的智慧
学习
wdfk_prog18 分钟前
LWIP教程 15:IPv4 与 IPv6——从网络层工作原理到嵌入式工程取舍
运维·开发语言·网络·笔记·学习·智能路由器·ip
chde2Wang26 分钟前
numpy学习3
学习·numpy
坤坤子吖31 分钟前
Linux 进程信号入门——从 Ctrl+C 到 kill
linux·开发语言·c++·笔记·学习
Gigavision1 小时前
SEED-V数据集下载 时频联合编码和空间、时间并行注意力学习脑电表示
学习
LONGZHIQIN1 小时前
Python学习笔记
笔记·python·学习
czt_java1 小时前
网络基础入门:IPv4、IPv6、私网公网、MAC、以太网帧与 DNS 学习笔记
网络·学习·macos
我命由我123452 小时前
LRU 缓存淘汰策略
数据结构·redis·学习·mysql·算法·缓存·学习方法
一木 之林2 小时前
微信小程序开发全攻略·文章版|01 入门与环境搭建
人工智能·学习·计算机视觉·微信小程序·notepad++
Xudde.2 小时前
Quaoar 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全