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

相关推荐
学编程的闹钟6 小时前
PHP变量类型转换机制全解析
学习
AI360labs_atyun9 小时前
字节AI双王炸来了!Seedance 2.0 + Seedream 5.0
人工智能·科技·学习·百度·ai
不用89k10 小时前
SpringBoot学习新手项初识请求
java·spring boot·学习
汐汐咯10 小时前
CNN学习
深度学习·学习·cnn
shadow fish11 小时前
react学习记录(三)
javascript·学习·react.js
Aliex_git11 小时前
浏览器 API 兼容性解决方案
前端·笔记·学习
四谎真好看11 小时前
SSM学习笔记(Spring篇 Day02)
笔记·学习·学习笔记·ssm
瞎某某Blinder14 小时前
DFT学习记录[3]:material project api使用方法 mp_api调取与pymatgen保存
java·笔记·python·学习
学编程的闹钟15 小时前
PHP编程高手的信息检索与文档查阅秘籍
学习
im_AMBER15 小时前
Leetcode 119 二叉树展开为链表 | 路径总和
数据结构·学习·算法·leetcode·二叉树