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