Linux, сопоставление нескольких адресов DMA с одним виртуальным адресом - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть несколько указателей памяти, выделенных dma_pool_alloc. Для всех них у меня есть адрес шины DMA (dma_addr_t), виртуальный адрес ядра (void *) и длина. У меня нет проблем, обращаясь к ним как к единому объекту с помощью операций чтения / записи, предоставляемых символьным устройством, но этот подход довольно сильно замедляет скорость (многие вызовы ядра). Я хотел бы отобразить их все на один виртуальный адрес в пространстве пользователя. Такие вещи, как remap_pfn_range принимает только один адрес, который на самом деле не сократить его. Есть ли способ сделать это?

P.S. Да, здесь есть несколько похожих вопросов о SO, но ни один из них не относится к отображению более одного физического адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...