linux内核 list_for_each_entry
1. linux内核中的list用法
在linus内核中,list一般这样使用:
struct list_head {
struct list_head *priv;
struct list_head *next;
}
struct xxx {
int value; // 结构体的真实成员
struct list_head *lh;
}
2. list遍历
结构体xxx里面有struct list_head *lh,同时lh通过priv和next和其他list_head*建立联系,这样就形成了结构体链表。
// 已知ptr是type结构体里面的member,求这个type结构体的地址
#define list_entry(ptr, type, member) container_of(ptr, type, member)
// ① 不要修改链表头
// ② cur_struct是传入的、可以被修改的、遍历找到的、成员包含list_head的结构体
#define list_for_each_entry(cur_struct, cur_list_head, member) \
for (cur_struct = list_entry(cur_list_head, typeof(cur_struct), member); \
&cur_struct->member != cur_list_head; // linux list是一个“双向环状”列表
cur_struct = list_entry(cur_struct->member.next, typeof(*cur_struct), member))
linux内核 list_for_each_entry的更多相关文章
- linux内核学习之七 可执行程序的装载和运行
一 程序的装载和运行的基本知识补充 1 当进程开始执行一个新的程序时,从父进程继承的所有页被释放,以便在新的用户地址空间开始执行新的计算,甚至进程的特权都可能发生改变,但是,进程的PID不会改变 ...
- 第七周——Linux内核如何装载和启动一个可执行程序
万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 part1 实验 ...
- Linux内核【链表】整理笔记(2)
关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型.至于链表的遍历,内核也有一 ...
- Linux内核循环链表经典分析和移植
为什么说这个链表做的经典呢,哥哥我从Linux内核里边儿扣出来的,要么怎么说内核不是一般人能写的,这代码太TM优美了! 这里有一篇参考文章:http://isis.poly.edu/kulesh/st ...
- Linux内核装载和启动一个可执行程序
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 理解编 ...
- Linux内核设计第七周 ——可执行程序的装载
Linux内核设计第七周 ——可执行程序的装载 第一部分 知识点总结 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 编译链接的过程 预处理阶段 gcc -E -o XX.cpp ...
- 《Linux内核分析》第七周 可执行程序的装载
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK SEVEN ...
- LINUX内核分析第七周学习总结:可执行程序的装载
LINUX内核分析第七周学习总结:可执行程序的装载 韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/cours ...
- Linux内核如何装载和启动一个可执行程序
exec 本节我们分析exec系统调用的执行过程. exec一般和fork调用,常规用法是fork出一个子进程,然后在子进程中执行exec,替换为新的代码. do_exec 跟上次的fork类似,这里 ...
- 基于tiny4412的Linux内核移植 --- aliases节点解析
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...
随机推荐
- Spring-Event入门实践及执行原理
一.入门案例 1. 添加依赖首先,在 pom.xml 文件中添加 Spring Boot 和 Spring Event 的依赖: <dependencies> <dependency ...
- json编码格式化美化
有时候你想存储一个json到文件中,然后让别人调用或者读取或者作为临时存储,诸如此类. 但是php json_encode后数据是压缩的没有格式化,导致读起来有点费劲. 所以你可以这样(php 5.4 ...
- json-lib(ezmorph)、gson、flexJson、fastjson、jackson对比,实现java转json,json转java
json-lib(ezmorph).gson.flexJson.fastjson.jackson对比,实现java转json,json转java 本文中所讲的所有代码都在此:json-test 目前关 ...
- Liunx-Shell脚本
shell可以理解为对命令行的一个解释器,命令行输入命令,shell执行,linux系统输出结果 1. shell脚本格式 开头: #!/bin/bash #!告诉系统其后路径所指定的程序即是解释此脚 ...
- Windows下搭建Linux开发环境(vagrant)
[下载] vagrant软件:https://www.virtualbox.org/wiki/Downloads centos镜像: http://isoredirect.centos.org/cen ...
- 2024御网杯信息安全大赛个人赛wp_2024-11-27
MISC题解 题目附件以及工具链接: 通过网盘分享的文件:御网杯附件 链接: https://pan.baidu.com/s/1LNA6Xz6eZodSV0Io9jGSZg 提取码: jay1 --来 ...
- 2024web漏洞扫描神器xray安装及使用_2024-11-28
一.功能 开源的Web漏洞扫描工具,支持以下漏洞 XSS漏洞检测 (key: xss) SQL 注入检测 (key: sqldet) 命令/代码注入检测 (key: cmd-injection) 目录 ...
- Sealos Devbox 基础教程:使用 Cursor 从零开发一个完整的项目
作者:熊猫Jay,上市公司技术负责人,破局AI 提示词.AI编程教练.通往AGI之路内容共创者 最近发现身边越来越多人尝试用 Cursor 写代码.开发小产品了. 如果想要实现商业化或引流,我们的小工 ...
- Java基础面试:Java中的方法
Java 中的方法 什么是方法 方法是 Java 中的一段可重用的代码块,用于执行特定的任务,是程序中的最小执行单元. 参数:方法可以接受一个或多个参数,这些参数是传递给方法的值,用于方法内部的逻辑运 ...
- base64计算文件大小方法(C#和js)
base64文件大小计算 有时候图片被base64之后需要计算图片大小,因为被编码后全是字符,计算文件大小可以反序列化成文件之后再获取大小,但是会比较麻烦.简单介绍一种利用base64编码原理计算大小 ...