【发布时间】:2016-06-22 02:57:45
【问题描述】:
我编写了一个内核驱动程序,它将我的 I/O 设备暴露给用户空间。 使用 mmap 应用程序获取虚拟地址以写入设备。 由于我希望应用程序写入使用大型 PCIe 事务,因此驱动程序将此内存映射为写入组合。 根据内存类型(写入组合或非缓存),应用程序应用最佳方法与设备一起工作。
但是,有些架构不支持写入组合,或者可能只支持部分内存空间。 因此,内核驱动程序告诉应用程序是否成功地将内存映射为写组合是很重要的。
我需要一种通用的方法来检查内核驱动程序映射(或将要映射)的内存是否是写组合的。 我该怎么做?
这是我的代码的一部分:
vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); io_remap_pfn_range(vma, vma->vm_start, pfn, PAGE_SIZE, vma->vm_page_prot);
【问题讨论】:
标签: memory-management linux-kernel linux-device-driver