自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

转载 [转]stdin,stdout,stderr

如果 `buf` 是 `NULL`,并且 `mode` 为 `_IOFBF` 或 `_IOLBF`,`size` 被忽略,系统自动管理缓冲区大小。3. 对于标准输入、输出和错误流(`stdin`、`stdout`、`stderr`),其缓冲模式和缓冲区可能由系统默认设置,调用 `setvbuf()` 可能会改变这些默认设置。1. `setvbuf()` 必须在第一次读写操作之前调用,即在 `fopen()` 之后、`fread()`、`fwrite()`、`fprintf()` 等之前调用。

2024-04-17 15:21:53 6

原创 创建字符设备在用户态读取物理地址内存

【代码】创建字符设备在用户态读取物理地址内存。

2024-04-09 16:46:05 185

原创 gcc -o $@ $^的作用

这条命令的作用是将 `main.o`、`module1.o` 和 `module2.o` 这些目标文件链接成一个名为 `my_program` 的可执行文件。- `$@`:表示规则的目标文件名。比如,如果当前规则的目标是 `my_program`,那么 `$@` 就会展开为 `my_program`。- `$^`:表示规则中所有依赖文件(前提条件)的列表。它会替换成依赖文件的完整路径,中间由空格分隔。

2024-03-25 10:36:42 148 1

原创 fiemap使用示例

【代码】fiemap使用示例。

2024-03-20 14:31:48 82

原创 NVMe协议——Atomic Write特性

​​​​​​​​​​​​​​Namespace Atomic Boundary Size Power Fail (NABSPF):指示特定于NAWUPF的原子边界大小。​​​​​​​​​​​​​​Namespace Atomic Compare & Write Unit (NACWU):NS原子比较&写命令的大小。​​​​​​​​​​​​​​Namespace Atomic Boundary Offset (NABO):NS第一个原子写边界开始的LBA。缺点:需要较多的SSD缓存,限制了支持的原子写大小。

2023-09-18 11:01:19 297

原创 设计与原型、重构、实现、测试的关系

设计是一个过程,在这个过程中探讨、启发,寻求最简洁有效的解决方法。设计一个方案是思维从模糊混沌演化到清晰明确的脑力过程,是对大脑中与该方案有关的现有的信息的加工,使其结构化、模型化。在设计的过程中,大脑需要的信息可能不足,或者信息量过大、过于复杂,超出大脑和设计方案的承载限度,所以可以去做原型。原型实现的过程中会展现更多的信息、细节,以验证方案可行性、补充方案的不足,并将方案的设想落实到原型中以降低方案的抽象、复杂度。

2023-09-12 10:18:58 80

原创 使用C语言实现RAID 5

要使用C语言实现一个基本的RAID 5系统,你需要考虑磁盘I/O、奇偶校验计算和数据恢复等关键方面。以下是一个简化的示例,用C语言演示如何实现一个基本的RAID 5系统,其中有3块磁盘驱动器。请注意,这个示例仅用于教育目的,实际的RAID 5系统会更复杂,需要更多的错误处理和优化。此示例假定每个磁盘块的大小相同。在生产环境中,建议使用现有的RAID解决方案或咨询专业存储解决方案供应商,而不是手动实现RAID 5。

2023-09-08 18:29:52 79 1

原创 RAID技术简介

这些是常见的RAID级别,每个级别都有不同的算法和特点,适合不同的用例和需求。选择合适的RAID级别取决于性能、可用性和容错性的权衡,以及存储设备和应用程序的需求。除了上述级别外,还存在其他RAID级别,如RAID 50、RAID 60等,它们结合了不同级别的特点来满足特定需求。RAID (Redundant Array of Independent Disks) 是一种数据存储技术,通过组合多个硬盘驱动器来提高性能、可用性和/或容错性。不同的RAID级别使用不同的算法和策略来实现这些目标。

2023-09-08 18:27:54 67 1

原创 2023.8月总结

毕业之后,一直从事linux内核驱动的开发和维护,主要用C语言。最近有空看了下python的基础知识。

2023-09-08 15:58:27 80 2

原创 python操作NVMe盘设备文件/dev/nvme0示例

您可以使用标准的文件I/O操作和相应的系统库。以下是一个基本的示例代码,演示如何在Python中读取和写入NVMe设备文件。请注意,NVMe设备文件通常需要超级用户或管理员权限才能访问。确保您以具有适当权限的身份运行以下代码。要在Python中操作NVMe盘设备文件。

2023-09-08 15:28:11 341 1

原创 VFS的IO栈

整个I/O栈允许应用程序通过高级抽象接口(系统调用和C库函数)访问文件和数据,而不必关心底层存储硬件和文件系统的细节。VFS的I/O栈是操作系统中文件系统管理的关键组成部分,使文件操作能够在不同类型的文件系统上实现统一的接口。在Unix和Unix-like操作系统中,VFS用于抽象不同类型的文件系统,使应用程序和系统能够以一种统一的方式与不同文件系统交互,而无需关心底层文件系统的细节。I/O栈是VFS中的一个关键组成部分,它包含了用于执行文件系统I/O操作的各个层次和模块。

2023-09-07 17:09:12 137

原创 SSD的垃圾回收-GC

当前大多数SSD盘的内部实现,单个single block中的物理空间一般是按照4K顺序分配(与NAND的物理结构有关,可以调整分配大小,也可以组成super block的所有single block交替分配若干个4K)。假如只有一个single block,有1024个4K的空间,总空间为1024*4K = 1MB大小。APP向这个SSD盘写入2个文件file1和file2的数据,file1和file2分别为512KB大小。

2023-09-07 15:52:07 272

原创 NVMe TP4146: Flexible-Data-Placement-Mode-FDP分析和思考

NVMe TP4146: Flexible-Data-Placement-Mode-FDP分析

2023-09-07 11:52:46 913

原创 elf程序文件的结构和解析代码示例

ELF(Executable and Linkable Format)是一种常见的可执行文件和共享库文件的格式,通常在Unix和Unix-like操作系统上使用。ELF文件结构包括多个部分,用于描述可执行程序或共享库的各个方面。.text.data.bss.symtab这些部分构成了ELF文件的基本结构,允许操作系统和链接器正确加载和执行可执行文件或共享库。不同类型的ELF文件(可执行文件、共享库等)可能具有不同的结构和包含不同的节和表,但上述结构是通用的。

2023-09-07 11:10:05 97

原创 vmware ubuntu编译内核源码&内核驱动模块

vmware ubuntu编译内核源码&内核驱动模块

2023-08-29 16:13:12 310 1

原创 python字符串理解和操作关键点

python字符串理解和操作关键点

2023-08-22 11:58:29 172 1

原创 windows和虚拟机linux上运行qemu

想在wsl ubuntu、vmwre ubuntu等虚拟机os中运行qemu,并能在qemu中再运行linux的os,这样就不用依赖物理的服务器上运行qemu,如果可以成功,就可以方便的修改扩展qemu的代码了。但是可惜没有正常运行起来。但是没有在网上找到支持x86_64的windows qemu的QEMU_EFI文件,按照同样的步骤安装x86_64版本的linux os没有成功。按照如下两个帖子的指导,可以安装arm架构的linux OS系统,并在windows上通过qemu虚拟机运行linux OS。

2023-08-18 10:28:07 913 1

原创 如何取消Windows11的右键二级菜单

通过执行如下的命令并重启后,即可取消掉windows11的右键二级菜单,恢复成windows10之前的右键展示全部选项。windows11做了一些小的改进,比如资源管理器中右键时,将许多选项做了隐藏,需要点击“但这样有个缺点,就是常用的选项在二级菜单,总是要点“”才能选中,反而降低了效率。

2023-06-12 13:54:21 2858

原创 ARM compiler 5(DS-5 built-in)编译错误:Eorror:#28 exppression must hasve a constant value

只是编译脚本中执行目标文件./helloworld_dt.exe会报Segmentation fault,因为这个0x12000000地址是嵌入式ARM环境中的ram地址,在windows的Mingw环境中并不存在。单独去执行,没有报错,为什么?

2023-03-15 10:15:41 118

原创 centos7安装内核源码树-编译加载nvme-ko驱动

centos7安装内核源码树-编译加载nvme-ko驱动

2023-03-06 20:47:49 2177

原创 Linux编译内核自带模块的方法

Linux编译内核自带模块的方法

2023-02-15 10:45:41 122

原创 难以理解的C语言

make it easier to understand and cheaper to modify.

2022-12-13 22:11:46 104 2

空空如也

空空如也

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

TA关注的人

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