场合
对于我的一个项目,我想绕过几乎所有的io缓存。因此我使用标志O_DIRECT
来访问我的硬盘。程序代码与此类似:
int fd = open64("/dev/sdb", O_DIRECT | O_RDWR | O_LARGEFILE | O_SYNC);
O_DIRECT
- 绕过几乎所有缓存O_RDWR
- 读写权限O_SYNC
- 同步。写一般程序是我无法使用标记O_DIRECT
访问硬盘。因此,我做了一些研究,发现DMA has to be activated.
可以使用以下命令完成此操作:
(sudo) hdparm -d1 /dev/sdb
结果是:
/dev/sdb:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Invalid argument
HDIO_GET_DMA failed: Invalid argument
问题
如何为本地硬盘启用DMA?