Функция объявлена в файле coresrv/io/dma.h.
Retcode KnIoDmaMap(Handle rid, rtl_size_t offset, rtl_size_t length, void *hint,
int vmflags, void **addr, Handle *handle);
Функция отображает участок DMA-буфера на адресное пространство процесса.
Входные параметры:
rid – дескриптор выделенного с помощью KnIoDmaCreate() DMA-буфера;offset – странично-выровненное смещение начала участка от начала буфера в байтах;length – размер участка; должен быть кратен размеру страницы и не превышать <размер буфера - offset>;hint – виртуальный адрес начала отображения; если он равен 0, адрес выберет ядро;vmflags – флаги аллокации.В параметре vmflags можно использовать следующие флаги аллокации (vmm/flags.h):
Допустимые комбинации атрибутов защиты памяти:
Выходные параметры:
addr – указатель на виртуальный адрес начала отображенного участка;handle – дескриптор созданного отображения.В случае успеха функция возвращает rcOk.
Пример использования – см. KnIoDmaCreate().
Чтобы удалить созданное отображение, необходимо вызвать функцию KnIoClose(), передав в нее дескриптор отображения handle.