自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逆风水手的博客

Linux内核深度解析

  • 博客(152)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用 strace 进行调试

strace 是可用于调试任何正在运行的程序的最佳工具之一。在我们深入之前,您需要熟悉系统调用。熟悉它们非常重要,因为 strace 公开了程序正在使用的系统调用。因此,在介绍 strace 之前,先介绍一些常见的系统调用。系统调用是“应用程序和 Linux 内核之间的基本接口”。如果您查看手册页,您会发现有很多系统调用,但我不会列出所有系统调用,而是列出您会看到的更常见的调用。Open() - 用于打开或创建文件的系统调用Read() - 用于读取文件的系统调用。

2024-04-17 17:45:39 519

原创 Linux镜像iso文件下载方式--SCAS 开源镜像站,速度快

Linux镜像文件下载地址--SCAS 开源镜像站,速度快。

2024-03-23 14:13:48 215

原创 [pcie]通过sysfs访问PCI设备资源

pcie文件系统说明

2024-03-08 13:16:09 160

原创 pcie中aer错误的原因已经如何看寄存器

PCI Express Advanced Error Reporting (AER) 是一种错误检测和报告机制,用于帮助检测和诊断 PCI Express 总线上的错误。如果输出结果中包含“status”和“error”字样,则说明设备存在 AER 错误。如果输出结果中包含“Advanced Error Reporting”或“AER”字样,则说明设备支持 AER。确定存在 AER 错误的 PCIe 设备。此命令将返回设备的 AER 寄存器值,其中包括错误状态、错误计数和错误信息等信息。

2024-03-08 13:09:08 500

原创 Cmake输出git内容方式

在CMake中获取git信息,可以通过execute_process命令运行git命令并将结果保存在一个变量中。然后可以使用configure_file命令将此信息写入一个头文件,最后在main函数中包含此头文件并打印相关信息。version.h.in 文件是需要手动创建来作为模板,cmake编译的时候回自动生成文件version.h文件,将数据保存到这个变量中,编译出来的固件就会有这些编译出来文件的符号和内容。在定位问题时,固件无法获取当前设备中版本的详细信息,无法准确获取版本具体内容。

2023-10-23 18:32:04 510

原创 【linux】【shell】查询OOM日志方式

【代码】【linux】【shell】查询OOM日志方式。

2023-10-11 08:53:31 741

原创 【linux】[OOM]now anon-rss:0kB, file-rss:0kB, shmem-rss:280kB

anon-rss:这表示没有映射到文件的内存量,即匿名内存。匿名内存通常是进程通过 malloc()或类似的方法动态分配的内存。在你的例子中,anon-rss 是 0 kB,表示没有这种类型的内存被使用。file-rss:这表示映射到文件的内存量。如果一个进程打开了一个文件并将其映射到内存,那么这部分内存就会被计入file-rss。在你的例子中,file-rss 也是 0 kB,表示没有这种类型的内存被使用。shmem-rss:这表示共享内存量。

2023-10-10 18:26:32 974

原创 【Linux】inittab系统启动时sysinit含义

null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 这个命令的意思是,在系统启动时不运行这个命令,而是在系统运行过程中,当需要创建一个从 /proc/self/fd/1 到 /dev/stdout 的符号链接时,再运行这个命令。在这个上下文中,“null” 是一个特殊的关键字,用于指示这个命令不需要在系统启动时运行,而是在系统运行过程中根据需要运行。这种语法是 init 系统的一部分,用于控制系统启动过程中哪些命令应该在哪个阶段运行。

2023-10-07 17:31:45 515

原创 【Linux】C语言实现对文件的加密算法

解密方式是进行第二次加密后自动解密16384。

2023-09-26 10:41:18 382

原创 【Xshell7】设置记录日志时间功能方式

[%l-%a-%s-%N]

2023-09-22 17:23:35 469

原创 【xshell7】设置语法高亮(突出显示集)方式

将下面内容起名 以.hls结尾,放入截图位置,然后按照步骤一选择即可。

2023-09-21 14:11:50 2842 2

原创 【Samba】win 11 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接

之前使用两个用户登录过,没有释放。

2023-09-12 13:18:19 1918

原创 【Linux】package ‘python-yaml‘ has no installation candidate 如何解决

如果上述步骤仍然无法解决问题,您可以尝试使用 pip 安装 python-yaml 包。确保您的软件源列表中包含了正确的软件源。确保您的系统已经更新到最新版本。

2023-09-06 19:02:56 1263

原创 【shell脚本】检查进程是否存在shell脚本

【代码】【shell脚本】检查进程是否存在shell脚本。

2023-09-06 11:02:50 520

原创 【Linux】内核宏定义解释postcore_initcall,arch_initcall,subsys_initcall

是一个宏,用于在Linux内核初始化过程中注册一个后期初始化函数。是一个宏定义,用于指定注册的函数在内核初始化的哪个阶段执行。是要注册的函数的名称,它是一个后期初始化函数。后期初始化函数是在内核初始化过程的最后阶段执行的函数。这些函数通常用于执行一些需要在其他子系统初始化之后才能进行的操作。截图汇总,是一个后期初始化函数,可能用于初始化PCI总线的相关内容。通过调用宏将后期初始化函数注册到内核中,可以确保在内核初始化的最后阶段执行该函数,从而完成相应的后期初始化工作。

2023-08-11 01:00:00 797

原创 【Linux】系统内核中System.map中字段含义解释

可以通过命令行过来初始化内容。地址表示的是函数的地址。

2023-08-10 14:59:00 383

原创 【PCIE】AER和DPC解释

AER(Advanced Error Reporting)和 DPC(Downstream Port Containment)是PCIe(Peripheral Component Interconnect Express)总线规范中定义的两种不同的错误处理机制,它们在PCIe架构中有一定的关联。

2023-08-09 00:15:00 3446

原创 【PCIE】PCIE的驱动和pcie的端口驱动关系

PCIe的端口服务驱动与PCIe驱动之间存在一定的关系,但它们是不同的概念。PCIe驱动是用于管理和操作PCIe设备的驱动程序。它负责与硬件进行通信,并实现对PCIe设备的配置、数据传输以及其他相关操作。PCIe驱动通常涉及设备的初始化、中断处理、寻址、DMA控制等。而PCIe的端口服务驱动是一种特殊类型的驱动程序,它专门用于管理和操作PCIe端口的特定功能和操作。PCIe端口是在主机系统上用于连接PCIe设备的接口,例如插槽或者集成到主板上的接口。

2023-08-07 00:30:00 820

原创 【Linux】内核线程创建 kthread_run 函数和内核中断

以PCIE的热插拔内核线程创建为例说明注意:内核线程和RTOS的线程略有不同,这里Linux上创建以后直接运行,RTOS上有的是需要加入到调度队列中后才会执行,比如RT-Thread的系统kthread_run 是 Linux 内核中的一个函数,用于创建和运行内核线程(Kernel Thread)。在 Linux 内核中,线程是一种轻量级的执行单位,可以独立运行并共享进程资源。

2023-08-04 16:19:04 1353

原创 内核中常用宏定义详解 container_of和list_entry

作用:用于根据结构体成员的指针计算出对应的结构体的指针这个宏包含了三个参数:ptr:结构体成员的指针。type:结构体类型。member:结构体成员变量的名称。宏的作用是根据给定的结构体成员的指针 ptr,返回对应的结构体的指针。它使用了指针运算和类型转换来实现。宏的具体实现如下:首先, 将一个空指针强制类型转换为指向 type 类型的指针,并且取得该指针指向的内存地址。接着, 取得了结构体成员 member 的偏移量,也就是 member 相对于结构体起始地址的偏移量。 将偏移量转换为字符指针,

2023-07-31 16:33:16 155

原创 实用的各种网址(建议收藏)

PPT课件网:http://www.pptkj.net/\n\nImgUpscaler:AI Image Upscaler - Upscale Photo, Cartoons in Batch Free 加强图片\n\nAI Draw:AI Draw | Convert Images to One-Line Drawings with AI \n\nZToDoList:https://www.ztodolist.com/#/ \n\nReshot:Reshot | Free icons & ill

2023-07-15 14:55:37 153

原创 【PCIE】Device Control Register (Offset 08h)

(最大传输负载大小)是PCI Express设备控制寄存器中的一个位域,用于设置设备支持的最大传输负载的大小。PCI Express使用数据包(Packet)来传输数据,而数据包由头部和有效载荷(Payload)组成。有效载荷是实际要传输的数据部分。最大传输负载大小定义了设备可以支持的最大有效载荷大小。在"Maximum Payload Size Supported"(MPSS)位域中,[2:0]表示3个比特位,用于编码支持的最大传输负载大小的取值。通常情况下,可能的取值包括:000: 128字节。

2023-07-12 13:03:14 645

原创 【PCIE】hot-reset和link disable

如果上游伪端口(Pseudo Port)的任何一个通道连续接收到两个带有热复位位设置为1b、禁用链路位和回环位设置为0b的TS1有序集合,并且两个伪端口上的任何一个通道(接收到TS1有序集合)要么收到EIOS(Electrical Idle Ordered Set),要么推测处于电气空闲状态,那么Retimer将执行以下操作:清除变量RT_LinkUp = 0b,表示链路未连接。将其发送器置于两个伪端口上的电气空闲状态。将变量RT_next_data_rate设置为2.5 GT/s。

2023-07-09 00:15:00 726

原创 【PCIE】协议分析之-hot-reset热复位

当高层(higher Layer)指示某些通道进行热复位(Hot Reset)时,以下操作将被执行:所有在配置的链路中的通道都会发送带有热复位位(Hot Reset bit)和配置的链路号、通道号的TS1有序集合。如果在任何通道上接收到两个连续的带有热复位位和配置的链路号、通道号的TS1有序集合,那么:LinkUp = 0b(False),表示链路未连接。如果没有高层指示物理层保持在热复位状态,则进入下一个状态:检测状态(Detect)。

2023-07-08 00:30:00 1244

原创 【PCIE】链路训练的TS训练序列解释

TS1和TS2有序集合是PCIe(Peripheral Component Interconnect Express)协议中使用的一种特殊数据包格式。这些有序集合用于在PCIe链路的训练阶段进行通信和控制。TS1(Training Sequence 1)有序集合:TS1有序集合是一个8个字符长的数据包,用于在链路训练开始时进行初始化和同步。TS2(Training Sequence 2)有序集合:TS2有序集合是一个32个字符长的数据包,用于进一步训练和调整链路的参数,以提高数据传输的可靠性和性能。

2023-07-07 13:07:55 1306

转载 【Linux】内核oops/缺页异常分析

看到一个写的比较好的帖子出处:https://www.zhihu.com/question/317992090/answer/2561856956。

2023-06-08 19:47:56 830

原创 【PCIE】TLP 发送三阶段和Secondary Bus Reset

TLP 发送的三个阶段涉及到 PCIe 协议栈中的不同层次,具体如下:TLP 发送阶段 1(TS1):这个阶段是在传输层(Transaction Layer)中进行的。在这个阶段,TLP 数据包会进行编码和格式化处理,并添加一些控制信息,如 Stream ID 和序列号等。同时,在这个阶段还会进行一些流控制、纠错等相关处理。TLP 发送阶段 2(TS2):这个阶段是在数据链路层(Data Link Layer)中进行的。

2023-06-06 19:58:56 1351 1

原创 【Linux】Busybox编译错解决

编译的时候我选择了编译静态库所以出这个问题。

2023-05-28 18:56:19 235

原创 【Linux】grep&sed替换字符串脚本实现

实现脚本当前目录下的字符替换,同时打印出替换的文件内容。

2023-05-28 00:45:00 506

原创 【Linux】Vim的使用快捷方式

VIM工具使用各种快捷方式,熟练掌握能够做到事半功倍的效果。

2023-05-27 00:30:00 952

原创 【Linux】Top命令参数解释

load average: 0.97, 0.41, 0.21:系统在过去1分钟、5分钟和15分钟内的平均负载值。S:进程状态 (D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程)。ni:用于调整进程优先级的用户进程空间占用率 (nice value)。%Cpu(s):指示各种CPU时间的使用百分比。NI:进程的nice值,用于调整进程的优先级。%CPU:该进程当前占用CPU的时间百分比。%MEM:该进程占用物理内存的百分比。TIME+:该进程占用CPU的总时间。

2023-05-26 22:03:43 1063

原创 【Git】git仓库的 .git 下各个目录注释

目录是Git版本控制系统的核心,它包含了Git所需要的所有信息,包括版本历史、分支、标签、配置等。目录是非常重要的,不应该随意修改或删除。如果需要备份或迁移仓库,应该将整个。目录一起复制或移动。

2023-05-26 13:15:39 1404

原创 【Linux】numactl命令

NUMA是非一致性内存访问。

2023-05-26 01:00:00 1188

原创 【Linux】dmidecode命令使用介绍

dmidecode 是一个命令行工具,用于显示系统的 DMI(Desktop Management Interface)信息。DMI 是一个由 SMBIOS(System Management BIOS)规范定义的接口,它提供了一种标准的方式来获取关于系统硬件和软件的信息。dmidecode 可以读取 DMI 数据结构并将其解码为可读的格式,以帮助管理员诊断和调试系统问题。它可以显示有关系统硬件组件(如处理器、内存、主板、BIOS 等)的详细信息,以及系统配置和运行状态信息。

2023-05-25 00:30:00 306

原创 【Linux】确定Linux系统启动方式是否是UEFI的方式

请注意,如果您的系统正在使用BIOS传统启动模式,则不会在/sys/firmware/efi目录下看到/efi和/boot/efi文件夹,并且上述命令的输出将不包含“EFI v”或“GPT”。查看/sys/firmware/efi目录下是否存在/efi和/boot/efi文件夹。如果输出中包含“BootCurrent:”和“BootOrder:”,则系统正在使用UEFI启动模式。如果输出中包含“EFI v”,则系统正在使用UEFI启动模式。如果输出中包含“GPT”,则系统正在使用UEFI启动模式。

2023-05-24 14:57:01 3817

原创 【Linux内核】Linux系统关于多进程和多线程相关知识点

而线程是在同一进程内部执行的,它们共享相同的地址空间和其他系统资源,因此线程之间切换的代价很小。在某些情况下,使用线程可以提高系统的性能,因为线程之间的切换成本更低,可以更好地利用CPU的时间片。但是,在其他情况下,使用进程可能更好,因为它们提供了更好的隔离和安全性,可以避免一些共享内存的问题。上下文切换是指当CPU从一个进程或线程切换到另一个进程或线程时,需要保存当前进程或线程的状态,并恢复下一个进程或线程的状态。而线程是依赖于进程的,一个进程中的所有线程共享相同的内存空间,因此线程之间通信更加方便。

2023-05-20 01:15:00 750 1

原创 【Linux内核】内存管理子系统知识点(建议收藏)

在Linux内核中,内存管理是非常重要的一部分,因为它负责管理系统中所有的内存资源。虚拟内存是一种内存管理技术,允许程序使用比实际物理内存更多的内存。当程序需要使用内存时,虚拟内存会将一部分数据从硬盘中复制到内存中,这样程序就可以继续执行。Linux内核使用一种称为“页表”的机制来管理虚拟内存。每个进程都有自己的页表,其中包含虚拟地址和对应的物理地址。当进程需要访问某个虚拟地址时,Linux内核会将其转换为对应的物理地址,并将其加载到内存中。页面置换算法是用于虚拟内存管理的一种算法。

2023-05-19 00:45:00 502

原创 Centos8.2网卡配置文件解释

Centos8.2网卡配置文件解释。

2023-05-19 00:15:00 1308

原创 【Linux】ko文件查询内部信息方法

在 Linux 中,可以使用 objdump 命令来反汇编 ko 文件并查看其中的宏定义值。其中,-d 参数表示反汇编目标文件,grep 命令用于查找特定的宏定义。

2023-05-18 10:03:38 3301

原创 【Linux】配置系统默认启动内核版本方式

这是一个在Linux系统中使用的命令行,用户通过该命令行查看并编辑GRUB2引导加载程序环境变量。

2023-05-16 14:31:45 2543

AER注入工具,和AER-DRV配套使用

AER注入工具,和AER-DRV配套使用

2023-08-28

aer故障注入工具,有需要下载

aer故障注入工具

2023-08-28

HCIA-欧拉操作系统培训手册

HCIA-欧拉操作系统培训手册,初手使用

2023-08-28

Linux命令行大全,内含中文版和英文版

Linux命令行大全,内含中文版和英文版

2023-08-28

PCI Hot-Plug Specification

PCI的热插拔协议

2023-08-28

pcie的recovery资料

pcie的recovery资料,有需要的可以下载查看

2023-08-28

pcie-aer 使用说明,中文版本

pcie-aer 使用说明,中文版本,AER相关内容可以参看

2023-08-28

qemu-8.0.0.tar.xz qemu源码

qemu源码分享

2023-05-26

re2c-3.0.tar.xz,是Google的一名程序员推出的注重速度的构建工具

ninja 是Google的一名程序员推出的注重速度的构建工具.一般在Unix/Linux上的程序通过make/makefile来构建编译,而ninja通过将编译任务并行组织,大大提高了构建速度。

2023-05-26

QEMU使用的工具,QEMU使用的工具

QEMU使用的工具

2023-05-26

emEditor.rar

一个文档阅读器,可以阅读CSV等各种文件,非常好的工具

2023-05-25

Arbor1-6-windows-x64-1-6-284.exe

一个pcie的好工具

2023-05-25

抢茅台脚本以及使用方法

抢茅台的方法,里面有脚本文件和python的安装包,小白可以学习使用,大佬绕行吧,哈哈

2021-01-08

linux-sys.zh 邢文鹏课件

linux-sys.zh 邢文鹏课件,分享给需要的小伙伴,一起进步,加油

2019-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除