Linux 内核
文章平均质量分 73
Configure-Handler
这个作者很懒,什么都没留下…
展开
-
kretprobe kretprobe_instance私有数据区
这段初始化申请的内存是所有kretprobe实例共用的,也就是说是轮转使用的,所以在ret_handler使用完这段内存之后,需要将私有数据区的相关字段set为0。从上述内存申请的逻辑来看,被跟踪的实例是存在限制的,在注册kretprobe时可以根据实际情况进行调整。从内核代码出发,看看在注册kretprobe的时候是怎么分配内存的?的大小是在register_kretprobe时根据设定的data_size来设定。的size由结构体struct kretprobe的成员data_size来初始化。原创 2024-03-05 19:16:22 · 872 阅读 · 0 评论 -
Linux 内核irq_stack遍历
环境Centos 4.18.0-80.el8.x86_64。原创 2024-03-01 08:57:52 · 1062 阅读 · 0 评论 -
open与openat的区别
open 与 openat原创 2023-11-29 22:07:23 · 742 阅读 · 0 评论 -
einj 注入内存ue/ce故障
einj 注入内存ue/ce故障原创 2023-11-29 22:04:36 · 3201 阅读 · 0 评论 -
`kprobe`和`kretprobe`同一个函数能不能调注册多个回调?
kprobe使用原创 2023-11-28 09:04:01 · 418 阅读 · 0 评论 -
linux内核 fault-injection
实验环境raspi 4b。原创 2023-06-30 07:57:40 · 786 阅读 · 0 评论 -
Linux 内核likely与unlikey
这里的意思是exp==c的概率很大,用来引导GCC用来条件分支预测,开发人员最清楚最可能执行哪个分支,并将最有可能执行的分支告诉编译器,让编译器优化指令序列排序,使指令尽可能的顺序执行,从而提高CPU预取指令的正确性,提升CPU执行性能。的值不为0的可能性大一些,执行else机会大一些,加上这种修饰,编译成二进制代码时likely使得if后面的执行语句紧跟着前面的程序,unlikely使得else后面的语句紧跟着前面的程序,这样就会被cache预读取,增加程序的执行速度。先得学一学GCC提供的内建函数!原创 2023-03-19 12:29:49 · 490 阅读 · 0 评论 -
xfstests-bld实战
xftests原创 2023-02-21 08:26:57 · 349 阅读 · 0 评论 -
xfstests-bld简介
xfstests原创 2023-02-21 08:25:17 · 587 阅读 · 1 评论 -
linux 内核判断是否处于中断上下文
上下文判断原创 2023-02-16 15:58:53 · 255 阅读 · 0 评论 -
/proc/sysrq-trigger
内核调试信息原创 2022-11-27 12:14:55 · 383 阅读 · 0 评论 -
用户态查看内存页属性page-types
page-types原创 2022-11-12 10:27:44 · 379 阅读 · 0 评论 -
iostat计算元数据diskstat
内核磁盘IO数据原创 2022-10-30 21:30:55 · 331 阅读 · 0 评论 -
Linux x86架构内核Hook实现
Linux x86架构内核Hook实现一、内核函数text_poke()函数用于在内核动态替换opcode,从而达到Inline Hook的效果。/** * text_poke - Update instructions on a live kernel * @addr: address to modify * @opcode: source of the copy * @len: length to copy * * Only atomic text poke/set should be原创 2021-12-27 07:57:06 · 5192 阅读 · 0 评论 -
linux ext4文件系统为什么目录大小是4k?
Why does every directory have a size 4096 bytes (4 K)?](https://askubuntu.com/questions/186813/why-does-every-directory-have-a-size-4096-bytes-4-k)To understand this, you’d better have some basic knowledge of the following (file system):inode (contains原创 2021-10-18 10:22:19 · 4143 阅读 · 0 评论 -
Linux kernel 5.x wait_event_interruptible_timeout()
先看看内核源码的注释,这往往是在研究内核函数必读的一段文字,这将会给我们理解内核代码执行逻辑带来很大的帮助,一定要花时间好好理解;函数在内核代码被定义为一个宏:#define __wait_event_interruptible_timeout(wq_head, condition, timeout) \ ___wait_event(wq_head, ___wait_cond_timeout(condition), \原创 2020-12-31 14:16:40 · 390 阅读 · 0 评论 -
Linux 编译debug内核
0x01:下载内核源码a.官方网站: https://www.kernel.org/b.ftp服务器下载: http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/下载内核源码版本:5.3.10x02:编译带调试信息内核做解压内核代码,我这里下载linux 内核压缩包为linux-5.3.1.tar.gz,解压方式tar -zxvf linux-5.3.1.tar.gzmake menuconfig -> kernel d原创 2020-12-28 16:54:37 · 7480 阅读 · 0 评论 -
Linux 进程状态剖析
先看看一张笨叔叔《奔跑吧Linux内核》扣的图,从这张图中我们可以看到一个进程的所有状态:状态描述创建态创建了新的进程(新进程)就绪态进程获得了可以运行的所有资源和准备条件(TASK_RUNNING)运行态进程正在cpu中运行 (TASK_RUNNING)阻塞态进程因为等待某项资源而被暂时移出了CPU (TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE)终止态进程消亡(EXIT_ZOMBIE或__TASK_STOPP原创 2020-12-25 14:27:18 · 1454 阅读 · 0 评论 -
Linux 内核双向链表
0x01:链表链表是Linux内核中非常重要的数据结构,在日常内核驱动开发过程中,往往需要遍历内核的某个链表,内核提供了一套完整的双链表机制,使开发者可以在内核私有数据结构中轻松构建双向链表,这里一起学习以下双向链表的构建和遍历方法,具体链表的知识可以参考文末链接;0x02:双向链表的构建和遍历直接给出代码://list.c#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.原创 2020-12-16 09:27:15 · 1469 阅读 · 0 评论 -
Linux 中的进程与线程(二)
从上面图可以看出,进程切换有两种昂方式:1.当进程由于需要等待某种资源而无法继续执行下去,这个时候只能主动将自己挂起(调用schedule函数),引发一次任务调度过程;2.另外一种是进程欢快执行,但是由于各种调度事件的发生(例如时间片用完)而被迫让出CPU,被其他进程抢占。task_struct --> unsigned int rt_priority;...原创 2020-11-10 09:32:08 · 1296 阅读 · 0 评论 -
Linux 中的进程与线程(一)
在中断服务程序、内核软中断服务程序以及其他设备驱动程序的设计中,注意不能让这些函数嵌套太深,不宜使用太多、太大的局部变量,入以下例子;int function(){ char buf [1024]; //buf为局部变量,在堆栈中消耗了1KB ...............}进程task_struct结构以及系统空间堆栈的特殊安排,决定了内核中的一些宏定义;#define THREAD_SIZE (2*PAGE_SIZE)//2的1次方个PAGE_SIZE#define alloc.原创 2020-11-04 16:04:03 · 2588 阅读 · 0 评论