自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编译器学习路线概述以及相关概念

通俗讲是高级语言翻译成机器语言的翻译器高级语言:不依赖机器的语言 如C/C++低级语言:依赖于机器,在机器上运行的语言编译过程:语法分析;语义分析;生成中间代码;代码优化;生成目标程序;

2023-10-27 15:27:11 134

原创 Ubuntu 5.4.0-84 切换内核5.10.118

最近一直在ubuntu 上切换内核 遇到了一些坑也比较反感内核的编译时间太长,但还是记录一下吧。

2023-10-26 16:58:03 271

原创 【NVMe 专题之reset_work】

host 得到identify 数据 初始化host Namespace 的identify 的数据。从nvme_ctrl_regs_base + NVME_REG_ACQ/ASQ 获取地址。配置CC.AMS[仲裁机制] CC.MPS[内存页大小]CC.CSS[I/O命令选择]读取CAP 的信息 并将CAP 上的所有信息赋值给dev 结构体。使用setfeature 命令 设置host mem 数量。设置 io q 的数量 创建IO CQ/SQ 并设置中断。用setfeature 命令 设置异步通知事件。

2023-09-14 17:16:23 126

原创 Linux内核API 之BLK --blk_rq_map_kern

如果数据未对齐或位于内核栈上(通过 `blk_rq_aligned` 和 `object_is_on_stack` 函数进行检查),则使用 `bio_copy_kern` 函数创建一个新的 BIO(块输入/输出对象),并将数据复制到其中。首先,函数检查传递给它的参数,包括数据长度(len)是否超出了队列支持的最大扇区数(queue_max_hw_sectors(q))。函数设置 BIO 的操作标志(`bi_opf`)以匹配请求的操作类型,然后将 BIO 添加到请求中。,其中包含要映射到请求的数据。

2023-09-07 15:54:39 173

原创 Ubuntu ssh 访问服务器失败

错误消息中提到的密钥交换方法是 "diffie-hellman-group1-sha",这是一个较旧且不安全的密钥交换方法,通常不建议使用。:如果您不控制SSH服务器,或者无法更新配置文件,那么可能需要联系SSH服务器的管理员,询问他们是否可以更新服务器以支持更多的加密算法。:首先确保您的SSH客户端是最新版本,因为新版本通常会支持更多的加密算法。如果您控制SSH服务器,可以尝试更新SSH服务器的配置,以支持SSH客户端支持的加密算法。:要根据客户端的提示来逐一添加密钥交换方法。,表明SSH连接无法成功,

2023-09-06 18:39:40 1461

原创 Linux内核API之PCI之 pci_alloc_irq_vectors_affinity

PCIe 设备通常需要与操作系统交互,以便在设备状态发生变化时通知系统。这有助于提高性能和可伸缩性,因为可以将中断处理与特定的 CPU 核心关联,:函数会返回成功分配的中断向量数量,开发人员可以使用这个信息来了解设备可以使用的中断资源。允许开发人员为分配的中断向量指定亲和性,以确保它们分布在系统中的不同核心上。这对于有效管理系统中的中断处理非常重要,特别是在多核处理器上运行的系统中。用于分配一个或多个中断向量,这些向量用于处理设备发出的中断请求。内核中,用于分配 PCIe 设备的。

2023-09-05 06:02:22 359

原创 Linux内核API之lo_hi_readq

函数用于从64位的内存地址中原子性地读取一个64位的值。这个函数是用来读取具有64位宽度的寄存器或内存位置的值的,确保读取操作是原子性的,以防止多个CPU同时访问并造成竞态条件。函数是用于在Linux内核中进行原子性的64位数据读取操作的工具函数,通常用于与底层硬件设备进行通信和控制。这有助于确保在多核CPU环境中对硬件资源的访问是可靠和原子性的。在Linux内核中,

2023-09-03 23:27:02 82

原创 [NVMe 专题-nvme_ctrl 结构体分析]

在 NVMe 设备中,异步事件是指在某些特定的情况下,设备会主动通知主机关于状态变化、错误情况或其他事件的信息,而不需要主机发起查询。通过检查 aen_result 字段,驱动程序可以确定是否需要进一步处理异步事件,比如读取相关的事件信息,做出适当的响应,或者更新控制器的状态。具体来说,cctemp 字段定义了一个关键温度阈值,当 NVMe 设备的温度超过这个阈值时,系统会触发紧急保护措施,例如自动降低性能、停止操作、强制关机等,以防止硬件在高温环境下工作,从而避免硬件故障或数据丢失。

2023-08-27 17:33:56 423

原创 Linux 内核 API dma_pool_create

返回的对象将不会跨越这个大小边界。这对于具有对单个DMA传输的寻址限制的设备非常有用,例如不跨越4KB边界。,可以由设备及其驱动程序访问,而无需使用缓存刷新等。实际分配的内存块大小可能会由于对齐而比请求的大小要大。函数来分配内存块,这些内存块都具有一致性的DMA映射,可以直接用于设备之间的数据传输。返回值:具有所请求特性的DMA分配池,如果无法创建则返回。返回的DMA分配池可以通过。在使用这些池的情况下,可以使用。“一致性”DMA映射。

2023-08-24 20:40:10 326

原创 Linux 内核 通用 API kobject_get

kobject_get(&dev->kobj) 是一个用于获取 kobject 引用计数的函数调用。在 Linux 内核中,kobject 用于管理内核对象的生命周期和属性。kobject 具有引用计数,以便在使用它时可以跟踪其引用情况,确保在不再需要时进行正确的内存管理。

2023-08-24 17:54:39 143

原创 Linux 内核 通用API get_device

它接受一个指向设备结构体的指针作为参数,并在引用计数上增加。如果成功,函数将返回传入的设备指针,否则返回 NULL。通过调用这个函数,调用者表示它正在使用该设备,并希望确保在使用期间设备不会被释放。在使用设备之前,通常会调用 get_device 来增加引用计数,以保证设备在使用期间不会被释放。当使用完成后,通常会调用 put_device 函数来减少引用计数,以允许设备在不再需要时被释放。在Linux内核中,get_device 是一个函数,因此需要确保在使用设备期间,设备不会意外地被释放。

2023-08-24 17:23:09 206

原创 【linux 内核传参 module_param_cb 】

宏:这个宏用于为参数提供描述信息,帮助用户了解参数的作用。在这里,它为两个参数提供了描述信息,说明了它们的作用和含义。的默认值,由于你没有提供参数的默认值,所以默认值将取决于该参数的类型。它接受四个参数:参数名、参数操作结构体、参数值的指针以及权限模式。函数:这是一个回调函数,用于处理字符串类型的参数值,并将其转换为无符号整数。结构体:这个结构体包含了操作函数指针,指向参数的设置函数和获取函数。的默认值被设置为8。: 一个回调函数,用于设置和获取参数值的操作。: 参数的访问权限,用于确定参数是否可以读写。

2023-08-24 16:12:33 856 1

原创 【NVMe 专题 probe详解】

Nvme Probe 主要功能就是初始画探测pcie总线上的设备 并将该设备初始化建立连接,方便后期host 和 device 之间的数据通信初始化流程是什么样子的?在nvme 控制器初始话之前做了哪些工作,初始化后有做了哪些工作,为什么这样做呢?三者之间宏观意义的从属联系nvme 设备和 pci 都属于device 通用设备,二者之间也是通过device 来建立关系的。

2023-08-24 14:49:35 324

原创 第一章 Python 标准数据类型

4、Python中的字符串不能改变 不能对单个字符赋值strp[0]=‘a’ 这是一种错误的表述。2. 加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。3、Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。1、Python可以同时为多个变量赋值,如a, b = 1, 2。3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。等号(=)用来给变量赋值。

2023-08-22 03:52:16 30

原创 【NVMe 专题详解 probe 之 reset - nvme_reset_work】

在NVMe 在初始化完控制器后会 调用async_schedule(nvme_async_probe, dev);来刷新工作队列,当控制器被复位时会执行nvme_reset_work。

2023-08-17 20:36:10 615

原创 【NVMe 专题 1】单独编译NVMe驱动和加载 【kernel 5.10.188】

在 Linux 驱动中,NVMe 目标是指 NVMe 存储设备本身,由硬件供应商提供的设备驱动程序负责实现与主机通信的协议和操作。目标驱动程序通常在主机驱动的控制下执行读写操作,执行 NVMe 协议中定义的各种命令和操作。"host" 表示运行驱动程序的计算机系统,负责控制和管理 NVMe 设备,而 "target" 表示实际的 NVMe 存储设备,负责执行主机发送的命令和操作。主机驱动和目标驱动共同实现了 NVMe 协议的交互和通信。NVMe 主机驱动负责管理系统中的 NVMe 设备,包括。

2023-08-17 11:45:37 1251

原创 【python环境搭建】conda 安装过程中无法激活 python 虚拟环境问题

CSDN 上搜了一堆,照着试了试问题还是没有解决。没办法只能自己想办法,思考了一下这种问题的原因,应该是windows 环境变量配置有问题。最近重新学习python 需要搭建conda 环境 遇到一个懵逼的问题。jupyter notebook 运行成功。运行jupyter notebook。当然系统环境下,最好尽量也去配置。用户环境需要添加环境变量。实际上问题没有解决。

2023-08-17 01:40:02 2051

原创 Flask CentOS 8 LNMP 生产环境部署

目录1.Python 依赖库安装2.Mariadb 安装3.nginx install1.进入nginx 解压后的目录进行check2.依赖库check3.查看防火墙设置发现没开启80端口1.iptables -L -n2.最后重新配置 端口CentOS 8 该系统与centos7 相比较还是有区别的,python 环境3.6 安装后的 fir...

2020-05-02 17:16:12 550

原创 字符串字符数组的赋值

字符数组的定义与初始化Char str[10] = {‘a’,‘b’,‘c’,‘d’,‘e’};如果说提供的字符的个数大于数组的长度,就按语法错误处理,如果小于数组的长度,不够的位置用空字符补全’\0’字符数组与字符串1)、C语言中将字符串当做字符数组来处理,字符串的结束标志是‘\0’,而前面的所有字符组成字符串,不算’\0’

2017-07-25 14:02:49 15739

空空如也

空空如也

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

TA关注的人

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