我正在为我的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的权限。
答案 0 :(得分:1)
prmatta,
错误代码22是EINVAL
。
来自告诉你的mmap()
文档......
EINVAL我们不喜欢开始或长度 或抵消。 (例如,它们太大了, 或者不在页面边界上对齐。)
也许你没有页面对齐你的记忆?