Библиотека libkos

Библиотека libkos является базовой библиотекой KasperskyOS, предоставляющей набор API, через которые программы и другие библиотеки (например, libc, kdf) используют службы ядра. API, предоставляемые библиотекой libkos, обеспечивают для разработчиков решения следующие возможности:

На аппаратных платформах с процессорной архитектурой Arm входные и выходные параметры API библиотеки libkos нельзя сохранять в памяти типа "Device memory", поскольку это может привести к неопределенному поведению. (Исключениями являются: параметр addr функции KnVmQuery() из API vmm_api.h, параметры reg и baseReg функций из API mmio.h, параметр va функции KnHalFlushCache() из API hal_api.h, параметр va функции KosCpuCacheFlush() из API cpucache.h.) Параметры API библиотеки libkos нужно сохранять в памяти типа "Normal memory". Чтобы копировать данные из памяти типа "Device memory" в память типа "Normal memory" и обратно, нужно использовать функцию RtlPedanticMemcpy(), объявленную в заголовочном файле sysroot-*-kos/include/rtl/string_pedantic.h из состава KasperskyOS SDK.

В этом разделе

Управление дескрипторами (handle_api.h)

Управление виртуальной памятью (vmm_api.h)

Использование рабочего набора (ws_api.h)

Выделение и освобождение памяти (alloc.h)

Использование DMA (dma.h)

Ввод-вывод через память (mmio.h)

Управление обработкой прерываний (irq.h)

Управление потоками исполнения (высокоуровневый API thread.h)

Управление потоками исполнения (низкоуровневый API thread_api.h)

Управление процессами (высокоуровневый API task.h)

Управление процессами (низкоуровневый API task_api.h)

Инициализация IPC-транспорта для межпроцессного взаимодействия и управление обработкой IPC-запросов (transport-kos.h, transport-kos-dispatch.h)

Инициализация и деинициализация IPC-транспорта для обращения к модулю безопасности (transport-kos-security.h)

Использование пула потоков исполнения для обработки IPC-запросов (dispatch_pool.h)

Генерация случайных чисел (random_api.h)

Получение и изменение значений времени (time_api.h)

Использование уведомлений (notice_api.h)

Динамическое создание IPC-каналов (cm_api.h, ns_api.h)

Использование примитивов синхронизации (event.h, mutex.h, rwlock.h, semaphore.h, condvar.h, sync_api.h, sync_types.h, sync.h)

Управление изоляцией памяти для ввода-вывода (iommu_api.h)

Использование очередей (queue.h)

Использование барьеров памяти (barriers.h)

Выполнение системных вызовов (syscalls.h)

Управление IPC (ipc_api.h)

Использование сессий (session.h)

Использование объектов KosObject (objects.h)

Использование контейнеров объектов KosObject (objcontainer.h, objcontainernolock.h, basecontainer.h)

Использование идентификаторов объектов KosObject (objhandles.h)

Использование строк KosString (strings.h)

Управление драйвером XHCI DbC ядра KasperskyOS (xhcidbg_api.h)

Получение данных аудита безопасности (vlog_api.h)

Получение IPC-дескрипторов и идентификаторов служб для использования статически созданных IPC-каналов (sl-static.h)

Управление электропитанием (pm_api.h)

Получение значений счетчиков производительности (value_api.h)

Использование слоя аппаратных абстракций (hal_api.h, hal_common.h, hal_env.h, hal_privregs.h)

Очистка кеша процессора и получение сведений о кеше процессора (cpucache.h)

Использование файловой системы ROMFS (romfs.h)

Использование файловой системы ROMFS (высокоуровневый API fs.h)

Использование файловой системы ROMFS (низкоуровневый API fs_api.h)

Взаимодействие со встроенным программным обеспечением аппаратной платформы (efi_api.h)

Преобразование форматов представления идентификаторов UUID, GUID (uuid.h, guid.h, uuid_common.h)

Асинхронный форматированный вывод (log.h)

Многошаговая потокобезопасная инициализация и финализация (init_fini.h)

Использование специальных загружаемых секций ELF-образа с массивами объектов данных (iterable_section.h)

Журналирование работы программ (trace.h)

Получение идентификатора сборки из ELF-образа (elf_id.h)

Получение доступа к именованным BLOB-объектам (blob_api.h)

В начало