Функция объявлена в файле 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
.