Linux中的ioctl()是否有任何替代方案可以与nvme驱动器进行交互

时间:2017-12-20 05:33:34

标签: linux linux-kernel linux-device-driver systems-programming nvme

我正在研究nvme-cli的测试工具(用c编写,可以在linux上运行)。

对于SSD验证目的,我们实际上正在寻找将I / O命令发送到特定的提交队列(IO队列对)。我们需要这个,因为我们需要线程,但是为了实现线程化,我们需要将I / O请求发送到不同的队列,否则I / O请求将被串行处理。

那么在ioctl()中我们可以指定提交队列ID吗?

OR

还有其他与ioctl()类似的东西,我们可以指定提交队列ID吗?

由于我是nvme或ioctl的新手,如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

您可以尝试包含用户空间NVMe驱动程序的SPDK(https://github.com/spdk/spdk)。它是用C编写的。可以在spdk / include / spdk / nvme.h中找到其NVMe驱动程序API。例如,spdk_nvme_ctrlr_cmd_io_raw()用于将任何类型的IO命令以及任何创建的qpair发送到设备。

您还可以尝试SPDK的python扩展Pynvme(https://github.com/cranechu/pynvme)。它的IOWorker只是在分开的进程和qpair中发送请求。