subtitle
04
05
timerfd_ctx应用 timerfd_ctx应用
条件竞争创建timerfd#define _GNU_SOURCE#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <un
2025-04-05 q1ming
05
poll学习笔记 poll学习笔记
epoll先参考这个:https://evian-zhang.github.io/introduction-to-linux-x86_64-syscall/src/filesystem/epoll_create-epoll_wait-epo
2025-04-05 q1ming
04
timerfd-条件竞争 timerfd-条件竞争
源码分析https://elixir.bootlin.com/linux/v5.19/source/fs/timerfd.c 重点学习三个syscall(其实是5个,区分64位和32位):timerfd_create、timerfd_set
2025-04-04 q1ming
03
虚拟地址管理[half] 虚拟地址管理[half]
思维导图 相关数据结构vm_area_structvm_area_struct可以描述一个VMA区域的起始地址和大小,区域的属性,由vm_flags表示。 红黑树红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算
2025-04-03 q1ming
03
vmalloc 学习笔记 vmalloc 学习笔记
vmalloc的作用valloc的作用是为了解决线性映射区空间不足的问题: 分配过程源码路径:https://elixir.bootlin.com/linux/v5.19/source/mm/vmalloc.c vmalloc直接调用了_
2025-04-03 q1ming
02
KASAN学习笔记 KASAN学习笔记
KASAN基本原理KernelAddressSANitizer(KASAN)是一个动态检测内存错误的工具。它为找到use-after-free和out-of-bounds问题提供了一个快速和全面的解决方案。 KASAN本质是一个编译插桩的工
2025-04-02 q1ming
02
创建设备文件 创建设备文件
前言 具体步骤和上一篇的区别仅仅体现在代码上。 第一步:头文件增多了: LICENSE保持不变即可: 第二步:声明以及编写文件接口函数 查看一下file_operations在Linux源码中的定义:https://elixir.bo
2025-04-02 q1ming
02
内核模块编写入门 内核模块编写入门
基本步骤步骤一:在源码路径下创建你的模块的文件夹: 步骤二:然后在这个文件夹下编写你的文件: 步骤三:具体内容包括头文件、LICENSE、模块的初始化和退出函数: 对于初始化和结束销毁,笔者的理解是module_init和module
2025-04-02 q1ming
01
kfree源码分析2(slab何时被buddy-system回收) kfree源码分析2(slab何时被buddy-system回收)
kfree机制 1是快路径,其余的2、3、4、5都是慢路径的不同情况; 源码解析slub中有如下成员: counters是inuse、objects、frozen的联合体,便于一次性将三个值一起赋值、拷贝; inuse表示slub中已经分
2025-04-01 q1ming
01
subprocess_info 结构体 subprocess_info 结构体
背景分析下面分析 以下modeprobe_path的作用: 执行一个错误文件头的时候,调用链如下: 直接看exec_binprm函数,在一个depth的循环中迭代,调用到search_binary_handler: 进入到searchP
2025-04-01 q1ming
3 / 3