- 博客(638)
- 收藏
- 关注
原创 devm_pci_alloc_host_bridge函数总结
整体可以看出,就是将得到的资源以链表的形式存放在bridge->windows,bridge->dma_ranges这两个节点里,节点是一个结构体,里面成员说明了,这个资源的大小,类型等等。后续待扫描pcie时,就可以将这些资源分配给pcie设备。具体的解析过程就不分析了,可以自己加点打印进行观察。
2025-06-09 11:39:53
188
原创 总结一些setpci的用法
通过名称设置寄存器的值或者能力寄存器的值,尤其是查看能力寄存器的值,是及其方便的。这里就不设置了,可以自己找些可读写的寄存器试一下。可以看到和lspci看到的值是一致的。
2025-06-05 18:01:13
213
原创 linux 中断子系统 层级中断编程
参考:https://blog.csdn.net/caiji0169/article/details/143862261。
2025-04-24 17:37:42
246
原创 linux 中断子系统链式中断编程
参考:https://blog.csdn.net/caiji0169/article/details/143862261。虚拟中断控制器代码,chained_virt.c。gpio按键代码:gpio_key.c。
2025-04-24 14:25:03
261
原创 kvm使用virt-clone克隆虚拟机-主机和虚拟机之间共享文件
f是生成的新的虚拟机磁盘文件路径(一般是/var/lib/libvirt/images/这个路径)如果创建虚拟机过多,导致系统无法开机,可参考如下链接解决。使用命令查看磁盘空间,大概可以知道最多创建多少个虚拟机。克隆好以后,再次通过命令可以看到新增的虚拟机。-o后面要克隆的虚拟机名称。-n是新的虚拟机的名称。
2024-04-24 16:10:33
685
1
原创 在驱动中,利用Makefile增加宏定义
即在驱动源代码当中添加了DEBUG宏定义。即在驱动源代码当中添加了DEBUG宏定义。可以通过增加打印进行验证。可以通过增加打印进行验证。
2024-03-25 16:59:20
829
原创 linux deadline调度算法源码阅读记录
内核版本:3.13deadline-iosched.c#include <linux/kernel.h>#include <linux/fs.h>#include <linux/blkdev.h>#include <linux/elevator.h>#include <linux/bio.h>#include <linux/module.h>#include <linux/slab.h>#include &
2023-12-26 10:43:03
260
原创 linux block-plug形式的io合并代码分析
具体的合并代码就不分析了,比较重要的是,合并过程当中还有考虑一些值的限制情况,在符合这些值的限制下,才会进行合并,如果合并不了,则要重新分配一个request了。
2023-12-15 16:27:01
235
原创 struct queue_limits结构体参数学习
参考:内核版本:4.19.1内核提供了相关的API接口去设置这些相关的参数,在blk-settings.c文件。
2023-12-05 18:02:07
287
原创 linux内核bio子系统学习记录一:
主要源码目录 :block/bio.c include/linux/bio.h内核版本:4.19.1这部分先总结下bio子系统的初始化部分,后续再总结bio的申请以及释放,还有其它api的使用等介绍。bio的涉及到频繁的内存申请以及释放,包括bio结构体本身以及它比较重要的成员bi_io_vec*的内存申请和释放,所以初始化部分主要是相关的内存池的初始化,用于后面bio和bi_io_vec的内存申请和释放。defined。
2023-12-03 16:37:14
536
原创 blk_mq_init_queue函数学习记录
blk-mq编程,主要要调用两个函数进行初始化工作,blk_mq_init_queue这是第二个。该函数先是申请了struct request_queue结构,这个请求队列后面用于赋值给磁盘那个结构体的相应成员。
2023-11-24 11:04:05
636
原创 linux 3.13版本nvme驱动阅读记录二
内核3.13版本。该函数主要做了4减事情。1:nvme_dev_map,主要就是pci bar 那一套编程套路2:管理队列的配置3:dev_list?4:io队列的配置。
2023-11-06 09:17:10
438
原创 linux 3.13版本nvme驱动阅读记录一
2:dev->entry申请内存,大小是num_possible_cpus() * sizeof(*dev->entry),后面用于保存向量的相关信息,因为nvme是支持多队列的,所以后面可以将队列和特定的中断向量进行绑定,这个后面遇到相关代码再说。5:nvme_set_instance函数的调用,里面怎么实现的不用管,主要知道调用完它以后,dev->instance得到一个值就行了,这个值用于磁盘的命名,比如在dev目录下看到的/dev/nvmexxx就和这个值有关系。
2023-11-02 17:33:22
577
原创 scsi READ CAPACITY (10)命令总结
READ CAPACITY(10)命令(参见表119)请求设备服务器将描述直接访问块设备的容量和介质格式的8字节参数数据传输到数据缓存中。这个命令可以被处理,就好像它有一个HEAD OF QUEUE任务属性。如果逻辑单元支持保护信息,应用客户端应使用READ CAPACITY(16)命令,而不应使用theREAD CAPACITY(10)命令。
2023-10-12 18:06:21
1092
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人