0%

Kprobes 能够动态地中断任何内核正在执行的指令,可以在几乎任何内核代码地址处捕获,指定在断点被命中时要调用的处理函数。
目前有两种类型的probe:kprobes 和 kretprobes(也称为return probe)。 kprobe 可以插入到内核中的几乎任何指令上;而kretprobe是当指定函数返回时,会触发返回函数调用。
通常,Kprobes会被在内核模块中。在模块的初始化函数中,注册一个或多个probe函数,而在该模块的exit函数中取消注册的函数。后面会贴一些内核的事例代码。

Kprobe

Read more »

最近用到了内核中的一些宏定义(Macro),但一直以来,内核的宏定义学习起来都是比较费劲的,一层套一层的定义,新上手的同学一时间很难搞清楚运行时到底用了哪个宏定义,宏定义展开到底怎样。今天发现一个不错的方法研究内核的宏定义。

使用编译预处理研究宏定义展开

Read more »

名词解释

POSIX: Portable Operating System Interface
A cross-platform specification supported by UNIX operating systems and those considered UNIX-like, such as Linux. The X in the name originally denoted that the interface was “based on UNIX.”

Read more »

今天学到一个知识点X86-64-ABI pre-build X86-64-ABI 下载地址
斗胆翻译下其中的3.2章节

本节介绍了标准的函数调用顺序,包括堆栈框架的布局、寄存器的使用、参数传递等等。标准调用顺序的要求只适用于全局函数。局部函数不能从其他编译单元访问,所以不尽相同。尽管如此,我们还是建议所有的函数在可能的情况下使用标准的调用顺序。

Read more »

玩了这么久的Intel CPU,今天一个问题忽然闪现在我脑海:“X86_64到底有多少个寄存器”? 带着知识的渴求,我们来掰一下手指头。

通用寄存器 (general register)

Read more »

PCI以及PCIE设备非常普遍,其驱动也是内核中非常重要的一部分,受到网友的启发,借助QEMU一次性把PCI/PCIE的拓扑结构给说透(尽量)。
为了简单,这里使用virtio-scsi-pci HBA (host bus adapter)作为例子,分别来探究PCI和PCIE两种不同类型的总线。

PCI

Read more »

概述

Intel® DSA是集成在Intel处理器中的高速数据拷贝传输的加速器。用于优化应用程中用于存储、网络、persistent memory以及各种数据处理时的的那些数据流搬运和传输。
Intel® DSA取代了Intel® I/O Acceleration Technology中的Intel® QuickData Technology。

Read more »