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