linux - PCIe Driver - 用户空间如何访问它?

标签 linux linux-kernel linux-device-driver pci-e userspace

我正在为 Linux 编写一个 PCIe 驱动程序,目前没有 DMA,并且需要知道一旦从用户空间启用它后如何读取和写入 PCIe 设备。

在驱动程序中,我在 probe() 中执行基础操作:

pci_enable_device();
pci_request_regions();
pci_iomap();

但是我如何从用户空间访问这 block 内存进行读写呢?我是否将文件操作添加到我的 PCIe 驱动程序?来自 pci_iomap 的内存是否显示了用户空间代码可以调用的某个地方:

open('mapped memory location');
mmap(...);

如果有那么位置是什么?

注意:PCIe 设备不会插入任何 Linux 子系统,例如音频、以太网等。

最佳答案

如果你只想将内存从内核空间导出到用户空间并获得中断,请考虑 UIO driver .

有了它,所有的访问都将通过/dev/uioX 文件完成。您可以对其执行 mmap() 以导出内存,并且可以读取(使用阻塞读取)以“捕获”中断。

UIO 非常适合 PCIe,already is a driver在内核中。

关于linux - PCIe Driver - 用户空间如何访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276634/

相关文章:

c - Linux 内核 task_struct void *stack

c - 如何在linux内核模块中添加RTC定时器

linux - Linux 中 Google Chrome 的 AT-SPI

python - 从 Flask 中的另一个目录下载文件

c - 在内核空间和用户空间工作

android - 如何将设备驱动程序集成到 MIPI-LVDS 桥的 MDSS (MIPI-DSI) 子系统中?

linux-kernel - 绕过 I/O 调度和 linux 内核页面缓冲

java - 从绝对路径转换为相对路径

linux - 使用 rm 和 ls 时无法通过 SSH 删除目录

linux - 有什么方法可以知道 iostat 的序列或随机 IO 的百分比?