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

相关推荐
网络工程小王7 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
qq_571099357 小时前
学习周报四十三
学习
小郑加油8 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
MegaDataFlowers10 小时前
英语六级我还在背单词:Unit 1(Lesson 2)
学习
东京老树根10 小时前
SAP学习笔记 - BTP SAP Build12 - SAP Build Content Package
笔记·学习
幸福巡礼13 小时前
【LangChain 1.2 实战(一)】 概述
笔记·学习·langchain
知识分享小能手14 小时前
R语言入门学习教程,从入门到精通,R语言数据计算与分组统计(9)
开发语言·学习·r语言
lizhihai_9914 小时前
股市学习心得—半导体12种核心材料
大数据·人工智能·学习
sakiko_14 小时前
UIKit学习笔记3-布局、滚动视图、隐藏或显示视图
前端·笔记·学习·objective-c·swift·uikit
嵌入式-老费15 小时前
瑞芯微soc的学习和应用(题外话之esp32开发)
学习