linux 内核通用API 介绍
主要介绍kernel 的通用API 结构以及使用
粽子的蛋蛋
hollo Word
展开
-
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 · 212 阅读 · 0 评论 -
Linux内核API之PCI之 pci_alloc_irq_vectors_affinity
PCIe 设备通常需要与操作系统交互,以便在设备状态发生变化时通知系统。这有助于提高性能和可伸缩性,因为可以将中断处理与特定的 CPU 核心关联,:函数会返回成功分配的中断向量数量,开发人员可以使用这个信息来了解设备可以使用的中断资源。允许开发人员为分配的中断向量指定亲和性,以确保它们分布在系统中的不同核心上。这对于有效管理系统中的中断处理非常重要,特别是在多核处理器上运行的系统中。用于分配一个或多个中断向量,这些向量用于处理设备发出的中断请求。内核中,用于分配 PCIe 设备的。原创 2023-09-05 06:02:22 · 435 阅读 · 0 评论 -
Linux内核API之lo_hi_readq
函数用于从64位的内存地址中原子性地读取一个64位的值。这个函数是用来读取具有64位宽度的寄存器或内存位置的值的,确保读取操作是原子性的,以防止多个CPU同时访问并造成竞态条件。函数是用于在Linux内核中进行原子性的64位数据读取操作的工具函数,通常用于与底层硬件设备进行通信和控制。这有助于确保在多核CPU环境中对硬件资源的访问是可靠和原子性的。在Linux内核中,原创 2023-09-03 23:27:02 · 116 阅读 · 0 评论 -
Linux 内核 API dma_pool_create
返回的对象将不会跨越这个大小边界。这对于具有对单个DMA传输的寻址限制的设备非常有用,例如不跨越4KB边界。,可以由设备及其驱动程序访问,而无需使用缓存刷新等。实际分配的内存块大小可能会由于对齐而比请求的大小要大。函数来分配内存块,这些内存块都具有一致性的DMA映射,可以直接用于设备之间的数据传输。返回值:具有所请求特性的DMA分配池,如果无法创建则返回。返回的DMA分配池可以通过。在使用这些池的情况下,可以使用。“一致性”DMA映射。原创 2023-08-24 20:40:10 · 484 阅读 · 0 评论 -
Linux 内核 通用 API kobject_get
kobject_get(&dev->kobj) 是一个用于获取 kobject 引用计数的函数调用。在 Linux 内核中,kobject 用于管理内核对象的生命周期和属性。kobject 具有引用计数,以便在使用它时可以跟踪其引用情况,确保在不再需要时进行正确的内存管理。原创 2023-08-24 17:54:39 · 191 阅读 · 0 评论 -
Linux 内核 通用API get_device
它接受一个指向设备结构体的指针作为参数,并在引用计数上增加。如果成功,函数将返回传入的设备指针,否则返回 NULL。通过调用这个函数,调用者表示它正在使用该设备,并希望确保在使用期间设备不会被释放。在使用设备之前,通常会调用 get_device 来增加引用计数,以保证设备在使用期间不会被释放。当使用完成后,通常会调用 put_device 函数来减少引用计数,以允许设备在不再需要时被释放。在Linux内核中,get_device 是一个函数,因此需要确保在使用设备期间,设备不会意外地被释放。原创 2023-08-24 17:23:09 · 283 阅读 · 0 评论 -
【linux 内核传参 module_param_cb 】
宏:这个宏用于为参数提供描述信息,帮助用户了解参数的作用。在这里,它为两个参数提供了描述信息,说明了它们的作用和含义。的默认值,由于你没有提供参数的默认值,所以默认值将取决于该参数的类型。它接受四个参数:参数名、参数操作结构体、参数值的指针以及权限模式。函数:这是一个回调函数,用于处理字符串类型的参数值,并将其转换为无符号整数。结构体:这个结构体包含了操作函数指针,指向参数的设置函数和获取函数。的默认值被设置为8。: 一个回调函数,用于设置和获取参数值的操作。: 参数的访问权限,用于确定参数是否可以读写。原创 2023-08-24 16:12:33 · 1108 阅读 · 1 评论