android mmap失败:无效参数(错误22)

时间:2011-04-25 16:31:43

标签: android linux shared-memory

我正在为我的Android设备移植/编译androidvncserver,但是当我运行它(以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);
}

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

对于记录,像素= 614400和bytespp = 4。此外,/ dev / graphics / fb0由root(group = graphics)拥有,并具有660的权限。

1 个答案:

答案 0 :(得分:1)

prmatta,

错误代码22是EINVAL

来自告诉你的mmap()文档......

  

EINVAL我们不喜欢开始或长度   或抵消。 (例如,它们太大了,   或者不在页面边界上对齐。)

也许你没有页面对齐你的记忆?