android mmap 失败 : invalid argument (errno 22)

标签 android linux shared-memory

我正在移植/编译 androidvncserver对于我的 android 设备,但是当我运行它时(以 root 用户身份),我不断收到 mmap 错误。

违规代码如下所示:

/* Android does not use /dev/fb0. */
#define FB_DEVICE "/dev/graphics/fb0"

if ((fbfd = open(FB_DEVICE, O_RDONLY)) == -1)
{
    printf("cannot open fb device %s\n", FB_DEVICE);
    exit(EXIT_FAILURE);
}

<SNIP>

fbmmap = mmap(NULL, pixels * bytespp, PROT_READ, MAP_SHARED, fbfd, 0);
if (fbmmap == MAP_FAILED)
{
    printf("mmap failed errno = %d\n", errno);
    exit(EXIT_FAILURE);
}

我正在寻找有关如何进一步调试它的想法。

根据记录,pixels=614400 和 bytespp=4。另外,/dev/graphics/fb0 归 root (group=graphics) 所有,权限为 660。

最佳答案

普马塔,

错误代码 22 是 EINVAL

来自mmap()文档告诉您...

EINVAL We don't like start or length or offset. (E.g., they are too large, or not aligned on a page boundary.)

也许你没有页面对齐你的内存?

关于android mmap 失败 : invalid argument (errno 22),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780524/

相关文章:

java - NotificationCompat.Builder 中的 setLargeIcon() 不起作用

node.js - Electron window.opener 与浏览器一样完全支持

c - 对多个客户端使用共享内存和信号量

c++ - 基于共享内存的聊天应用程序的问题

android - 从桌面加载图像以在 Android Studio 中进行单元测试

android - (Android)进度条自定义: put vertical line on a bar,将箭头图片放在进度条上方

android - 我如何在 Android API 级别 10 上实现带有 ListView 的 SlidingDrawer?

linux - 一次读取一个输入文件作为输入传递给 grep

linux - 在 ASLR 系统上运行非位置无关的可执行文件

linux - 如何将数组值添加到文本文件中特定行的开头