LINUX.ORG.RU

Использование функции mmap, ошибка, помогите(+)?


0

0

При выполнении данной функции всегда выходит ошибка с кодом EINVAL, по документации это означает, что не правильно задано значение offset(у меня ноль). Подскажите в чем проблема? Андрей. //-------------------------------------------------- MJPG_buff = mmap(0, breq.count*breq.size, PROT_READ, MAP_SHARED, video_dev, 0); if (MJPG_buff == MAP_FAILED) { if(errno == EINVAL) printf("EINVAL "); system_error("mapping video buffers","mmap"); } //----------------------------------------------------------------

anonymous

Вообще-то `man mmap' говорит, что причиной этой ошибки может быть не только offset, но и length: "they are too large, or not aligned on a PAGESIZE boundary". Может быть, у тебя breq.count*breq.size дает слишком большую величину?

nobody ★★
()

Я пробывал вместо breq.count*breq.size вставлять и 1. Все равно ошибку выдает.

anonymous
()

Скорее всего дела в выравнивании. Посмотри ман по mprotect там есть пример с выравниванием

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.