Как получить адрес памяти FileDescriptor функции mmap() в Linux, для Video4Linux

Добрый день,

Я пытаюсь определить расположение в физической памяти буфера, выделенного видео для Linux IO_METHOD_MMAP.

Просматривая функцию mmap,

    mmap(NULL /* start anywhere */,
                            buf.length,
                            PROT_READ | PROT_WRITE /* required */,
                            MAP_SHARED /* recommended */,
                            fd, //FileDescriptor
                            buf.m.offset);

Я вижу, что buf.m.offset равен 0, а затем увеличивает значение buf.length для каждой плоскости.

Я ищу физический адрес в памяти для файлового дескриптора (fd), созданного устройством /dev/video0.

Это на Im6.

Цель этого состоит в том, чтобы передать этот физический адрес графическому процессору,

Спасибо,


person Mich    schedule 09.01.2015    source источник


Ответы (1)


После успешного mmap вы можете open (например, используя fopen), а затем последовательно читать (например, используя fgets) текстовый (конвейерный) файл /proc/self/maps (или также /proc/self/smaps).

См. proc(5) и этот ответ.

person Basile Starynkevitch    schedule 09.01.2015