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

相关推荐
小呀小萝卜儿1 小时前
2025-11-15 学习记录--Python-LSTM模型定义(PyTorch)
python·学习·lstm
XDHCOM1 小时前
通过手机远程操控电脑,一步步学习便捷方法
学习·智能手机·电脑
胡楚昊2 小时前
Polar MISC(下)
学习
程序员东岸2 小时前
从零开始学二叉树(上):树的初识 —— 从文件系统到树的基本概念
数据结构·经验分享·笔记·学习·算法
Tonya432 小时前
测开学习DAY29
学习
Fantasydg3 小时前
JSP学习
java·开发语言·学习
菩提树下的凡夫3 小时前
Node.js+Vue的学习笔记
笔记·学习·node.js
雾岛听风眠3 小时前
光耦学习笔记
笔记·学习
Kuo-Teng5 小时前
LeetCode 19: Remove Nth Node From End of List
java·数据结构·算法·leetcode·链表·职场和发展·list
代码AC不AC5 小时前
【C++】异常
c++·学习·异常