Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73859

GLib mmap: failed to allocate 4Gb

$
0
0

Вероятно, делаю всё совсем неправильно. Вот код на Vala:

int fd = open("/dev/fb0", O_RDWR);
ioctl(fd, FBIOGET_VSCREENINFO, &vinfo);
long screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
uchar[] data = (uchar[])mmap((void *)0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
Всё выполняется ровно до строчки с mmap. Причём open совершенно точно возвращает правильный fd, и ioctl получает правильный vinfo, так что даже scrensize вычисляется верный.
Но вот на mmap ругается:
GLib-ERROR **: gmem.c:100: failed to allocate 4294967295 bytes
Причём аналогичная программа на C работает нормально. Явно я где-то накосячил.
Или есть какой-то хитрый GLib-специфичный способ это сделать? Может, при помощи GIO?

 , , , ,


Viewing all articles
Browse latest Browse all 73859

Trending Articles