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

相关推荐
月下的郁王子4 分钟前
进阶学习 PHP 中的二进制和位运算
android·学习·php
xinxingrs13 分钟前
贪心算法、动态规划以及相关应用(python)
笔记·python·学习·算法·贪心算法·动态规划
sensen_kiss1 小时前
INT301 Bio-computation 生物计算(神经网络)Pt.8 主成分分析(PCA)与无监督学习
神经网络·学习·线性代数·机器学习
四谎真好看1 小时前
Java 黑马程序员学习笔记(进阶篇28)
java·笔记·学习·学习笔记
LFly_ice1 小时前
学习React-23-React-router
前端·学习·react.js
i***27952 小时前
【golang学习之旅】使用VScode安装配置Go开发环境
vscode·学习·golang
hd51cc2 小时前
文档与视图 学习笔记
笔记·学习
小猪佩奇TONY3 小时前
OpenGL-ES 学习(16) ----Pixel Buffer Object
服务器·学习·elasticsearch
学嵌入式的长路3 小时前
正点原子imx6ull移植lvgl v8.3及触摸屏调试
linux·驱动开发·lvgl·imx6ull·触摸屏
石像鬼₧魂石3 小时前
有哪些常见的字典可以用于Hydra的密码破解?
linux·学习·ssh