Android Mmap не удалось: неверный аргумент (errno 22) - PullRequest
3 голосов
/ 25 апреля 2011

Я портировал / компилировал 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);
}

Я ищу мысли о том, как отладить это дальше.

Для записи, пиксели = 614400 и байтыpp = 4.Кроме того, / dev / graphics / fb0 принадлежит пользователю root (group = graphics) и имеет разрешения 660.

1 Ответ

1 голос
/ 26 апреля 2011

prmatta,

Код ошибки 22: EINVAL.

Из документации mmap(), которая сообщает вам ...

EINVAL Нам не нравится начало или длина или смещение. (Например, они слишком большие, или не выровнены по границе страницы.)

Возможно, вы не выровняли страницу в памяти?

...