编写内核驱动程序aio_read,aio_write支持

时间:2015-01-22 21:55:28

标签: linux-kernel drivers

我目前正准备为我在嵌入式环境中使用快速设备(125 MB / s)进行通信而编写的内核模块编写aio支持。首先,我想看一些关于如何处理这个问题的例子,所以我在3.13内核中运行了grep -ri aio_write .

然而,经过进一步检查,我注意到大多数,如果不是所有 fs驱动程序实际同步执行aio_writeaio_read。它们最多使用向量输入来节省缓冲区分配。

我能找到的唯一一个实际支持异步aio的驱动程序是小工具USB驱动程序,drivers/usb/gadget/inode.c

  1. 这种观察是否意味着我可能从编写我自己的aio例程中受益?
  2. 我的目标带宽是libaiolibrt 足够吗?
  3. 此功能太新非常有争议并且可能会在几个内核时间消失?
  4. 我已经注意到固定多个用户页面并将它们DMA到我的外围设备实际上而不仅仅copy_from_user它们到PAGE_SIZE kmalloc '缓冲并循环几次。

    我担心我可能会花费大量时间和精力进行aio,因为它实际上比我简单的read / write复制用户缓冲区和DMA的方法更慢同步并阻塞,直到DMA完成。

    我很感激一些有经验的用户对此的见解,以帮助我评估aio。

0 个答案:

没有答案