KasperskyOS Community Edition 1.1
- Что нового
- О KasperskyOS Community Edition
- Обзор KasperskyOS
- Начало работы
- Разработка под KasperskyOS
- Запуск процессов
- Файловые системы и сеть
- Состав компонента VFS
- Создание IPC-канала до VFS
- Сборка исполняемого файла VFS
- Объединение клиента и VFS в один исполняемый файл
- Обзор: аргументы и переменные окружения VFS
- Монтирование файловой системы при старте
- Разделение файловых и сетевых вызовов с помощью бэкендов VFS
- Написание пользовательского бэкенда VFS
- IPC и транспорт
- KasperskyOS API
- Библиотека libkos
- Общие сведения о библиотеке libkos
- Память
- Аллокация памяти
- Потоки
- Дескрипторы
- Уведомления
- Процессы
- Динамическое создание каналов
- Примитивы синхронизации
- KosCondvarBroadcast()
- KosCondvarDeinit()
- KosCondvarInit()
- KosCondvarSignal()
- KosCondvarWait()
- KosCondvarWaitTimeout()
- KosEventDeinit()
- KosEventInit()
- KosEventReset()
- KosEventSet()
- KosEventWait()
- KosEventWaitTimeout()
- KosMutexDeinit()
- KosMutexInit()
- KosMutexInitEx()
- KosMutexLock()
- KosMutexLockTimeout()
- KosMutexTryLock()
- KosMutexUnlock()
- KosRWLockDeinit()
- KosRWLockInit()
- KosRWLockRead()
- KosRWLockTryRead()
- KosRWLockTryWrite()
- KosRWLockUnlock()
- KosRWLockWrite()
- KosSemaphoreDeinit()
- KosSemaphoreInit()
- KosSemaphoreSignal()
- KosSemaphoreTryWait()
- KosSemaphoreWait()
- KosSemaphoreWaitTimeout()
- DMA-буферы
- IOMMU
- Порты ввода-вывода
- IoReadIoPort8(), IoReadIoPort16(), IoReadIoPort32()
- IoReadIoPortBuffer8(), IoReadIoPortBuffer16(), IoReadIoPortBuffer32()
- IoWriteIoPort8(), IoWriteIoPort16(), IoWriteIoPort32()
- IoWriteIoPortBuffer8(), IoWriteIoPortBuffer16(), IoWriteIoPortBuffer32()
- KnIoPermitPort()
- KnRegisterPort8(), KnRegisterPort16(), KnRegisterPort32()
- KnRegisterPorts()
- Ввод-вывод через память (MMIO)
- Прерывания
- Освобождение ресурсов
- Время
- Очереди
- Барьеры памяти
- Получение сведений об использовании процессорного времени и памяти
- Отправка и прием IPC-сообщений
- Поддержка POSIX
- Компонент MessageBus
- Коды возврата
- Библиотека libkos
- Сборка решения на базе KasperskyOS
- Разработка политик безопасности
- Формальные спецификации компонентов решения на базе KasperskyOS
- Описание политики безопасности решения на базе KasperskyOS
- Общие сведения об описании политики безопасности решения на базе KasperskyOS
- Синтаксис языка PSL
- Описание глобальных параметров политики безопасности решения на базе KasperskyOS
- Включение PSL-файлов
- Включение EDL-файлов
- Создание объектов моделей безопасности
- Привязка методов моделей безопасности к событиям безопасности
- Описание профилей аудита безопасности
- Описание и выполнение тестов политики безопасности решения на базе KasperskyOS
- Типы данных в языке PSL
- Примеры привязок методов моделей безопасности к событиям безопасности
- Примеры описаний простейших политик безопасности решений на базе KasperskyOS
- Примеры описаний профилей аудита безопасности
- Примеры описаний тестов политик безопасности решений на базе KasperskyOS
- Модели безопасности KasperskyOS
- Модель безопасности Pred
- Модель безопасности Bool
- Модель безопасности Math
- Модель безопасности Struct
- Модель безопасности Base
- Модель безопасности Regex
- Модель безопасности HashSet
- Модель безопасности StaticMap
- Объект модели безопасности StaticMap
- Правило init модели безопасности StaticMap
- Правило fini модели безопасности StaticMap
- Правило set модели безопасности StaticMap
- Правило commit модели безопасности StaticMap
- Правило rollback модели безопасности StaticMap
- Выражение get модели безопасности StaticMap
- Выражение get_uncommited модели безопасности StaticMap
- Модель безопасности Flow
- Модель безопасности Mic
- Объект модели безопасности Mic
- Правило create модели безопасности Mic
- Правило execute модели безопасности Mic
- Правило upgrade модели безопасности Mic
- Правило call модели безопасности Mic
- Правило invoke модели безопасности Mic
- Правило read модели безопасности Mic
- Правило write модели безопасности Mic
- Выражение query_level модели безопасности Mic
- Методы служб ядра KasperskyOS
- Служба виртуальной памяти
- Служба ввода-вывода
- Служба потоков исполнения
- Служба дескрипторов
- Служба процессов
- Служба синхронизации
- Службы файловой системы
- Служба времени
- Служба слоя аппаратных абстракций
- Служба управления контроллером XHCI
- Служба аудита
- Служба профилирования
- Служба управления памятью для ввода-вывода
- Служба соединений
- Служба управления электропитанием
- Служба уведомлений
- Служба гипервизора
- Службы доверенной среды исполнения
- Служба прерывания IPC
- Служба управления частотой процессоров
- Паттерны безопасности при разработке под KasperskyOS
- Приложения
- Дополнительные примеры
- Пример hello
- Пример echo
- Пример ping
- Пример net_with_separate_vfs
- Пример net2_with_separate_vfs
- Пример embedded_vfs
- Пример embed_ext2_with_separate_vfs
- Пример multi_vfs_ntpd
- Пример multi_vfs_dns_client
- Пример multi_vfs_dhcpcd
- Пример mqtt_publisher (Mosquitto)
- Пример mqtt_subscriber (Mosquitto)
- Пример gpio_input
- Пример gpio_output
- Пример gpio_interrupt
- Пример gpio_echo
- Пример koslogger
- Пример pcre
- Пример messagebus
- Пример i2c_ds1307_rtc
- Пример iperf_separate_vfs
- Пример uart
- Пример spi_check_regs
- Пример barcode_scanner
- Пример perfcnt
- Дополнительные примеры
- Лицензирование программы
- Предоставление данных
- Информация о стороннем коде
- Уведомления о товарных знаках
KnIoDmaMap()
KnIoDmaMap()
Функция объявлена в файле 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
):
- VMM_FLAG_READ и VMM_FLAG_WRITE – атрибуты защиты памяти;
- VMM_FLAG_LOW_GUARD и VMM_FLAG_HIGH_GUARD – добавление защитной страницы перед и после выделенной памяти соответственно.
Допустимые комбинации атрибутов защиты памяти:
- VMM_FLAG_READ – разрешено чтение содержимого страницы;
- VMM_FLAG_WRITE – разрешено изменение содержимого страницы;
- VMM_FLAG_READ | VMM_FLAG_WRITE – разрешено чтение и изменение содержимого страницы.
Выходные параметры:
addr
– указатель на виртуальный адрес начала отображенного участка;handle
– дескриптор созданного отображения.
В случае успеха функция возвращает rcOk.
Пример использования – см. KnIoDmaCreate().
Чтобы удалить созданное отображение, необходимо вызвать функцию KnIoClose()
, передав в нее дескриптор отображения handle
.
Идентификатор статьи: kn_io_dma_map, Последнее изменение: 2 авг. 2023 г.