Функция объявлена в файле coresrv/io/mmio.h
.
Retcode KnIoMapMem(Handle rid, rtl_uint32_t prot, rtl_uint32_t attr,
void **addr, Handle *handle);
Функция отображает зарегистрированный участок памяти, которому назначен дескриптор rid
, на адресное пространство процесса.
С помощью входных параметров prot
и attr
можно изменить атрибуты защиты участка памяти, а также отключить кэширование.
Выходные параметры:
addr
– указатель на адрес начала участка виртуальной памяти;handle
– дескриптор участка виртуальной памяти.Функция возвращает rcOk в случае успеха.
prot
– атрибуты защиты участка памяти через MMU, возможные значения:
attr
– атрибуты участка памяти, возможные значения:
Пример
static Retcode MemInit(IOMem *resource)
{
Retcode rc = rcFail;
rc = KnRegisterPhyMem(resource->base,
resource->size,
&resource->handle);
if (rc == rcOk)
rc = KnIoMapMem(resource->handle,
VMM_FLAG_READ | VMM_FLAG_WRITE,
VMM_FLAG_CACHE_DISABLE,
(void **) &resource->addr, &resource->permitHandle);
if (rc == rcOk)
resource->addr = ((rtl_uint8_t *) resource->addr
+ resource->offset);
return rc;
}
В начало