【发布时间】:2012-11-19 11:19:47
【问题描述】:
我使用O_DIRECT 标志直接从用户缓冲区写入磁盘。
但据我了解,Linux 不保证在这个调用之后,数据被写入。
它只是使用 DMA 或其他任何东西直接从用户缓冲区写入物理设备......
因此,我不明白在调用'write'函数后是否可以写入用户缓冲区。
我确信示例代码将有助于理解我的问题:
char *user_buff = malloc(...); /* assume it is aligned as needed */
fd = open(..., O_DIRECT);
write(fd, ...)
memset(user_buff, 0, ...)
最后一行(memset)合法吗?写入用户缓冲区是否有效,DMA 可能使用该缓冲区将数据传输到设备?
【问题讨论】:
标签: c linux file block-device