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

相关推荐
free-elcmacom11 分钟前
机器学习高阶教程<6>推荐系统高阶修炼手册:混排、多任务与在线学习,解锁精准推荐新境界
人工智能·python·学习·算法·机器学习·机器人
崇山峻岭之间12 分钟前
Matlab学习记录06
前端·学习·matlab
黑客思维者16 分钟前
机器学习008:监督学习【回归算法】(逻辑回归)--AI世界的“是非判断题大师”
人工智能·学习·机器学习·逻辑回归
DeeplyMind19 分钟前
Linux 页表机制详解(x86_64 架构)
linux·驱动开发
山土成旧客20 分钟前
【Python学习打卡-Day24】从不可变元组到漫游文件系统:掌握数据结构与OS模块
数据结构·python·学习
小徐不会敲代码~24 分钟前
Vue3 学习 4
前端·vue.js·学习
MarkHD30 分钟前
智能体在车联网中的应用:第5天 车联网导论与体系认知:驶向智能出行的未来
学习
d111111111d35 分钟前
编码器测速详情解释:PID闭环控制
笔记·stm32·单片机·嵌入式硬件·学习·算法
我想我不够好。37 分钟前
电工学习 实操考点及打分项
学习
松涛和鸣1 小时前
35、Linux IPC进阶:信号与System V共享内存
linux·运维·服务器·数据库·算法·list