gpt4 book ai didi

android - 对 'posix_fadvise' 的 undefined reference

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:04 30 4
gpt4 key购买 nike

我使用的是Android NDK版本:r9c

我需要 posix_fadvise() 来建议操作系统不要缓存文件,我打开它是为了绕过缓存并在需要读/写时强制对存储设备进行 I/O 访问这个文件。

我没有打开带有 O_DIRECT 标志的文件的原因是 O_DIRECT 在不同设备上存在兼容问题。

我曾尝试直接调用 __NR_arm_fadvise64_64 但没有用,而且 __NR_fadvise 未在 NDK r9c 中定义。

下面是示例代码,系统调用read不会触发I/O访问,这意味着页面缓存仍然有这个文件的记录。

ret= fdatasync(fd);
ret = syscall(__NR_arm_fadvise64_64, fd, 0, 0, POSIX_FADV_DONTNEED);
if(ret !=0){
LOGE("syscall __NR_arm_fadvise64_64 errno: %s\n", strerror(errno));
}
ret = read(fd, buff, page_size);
if(ret<0){
LOGE("read errno: %s\n", strerror(errno));
return -1;
}

有没有其他方法可以绕过缓存或者如何让android系统调用posix_fadvise函数?

最佳答案

Android 5.0 (NDK) 支持 posix_fadvise。

__NR_arm_fadvise64_64 也找不到。

关于android - 对 'posix_fadvise' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29347531/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com