KasperskyOS Community Edition 1.3

Библиотека libkos

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

  • управление процессами, потоками исполнения, виртуальной памятью;
  • управление доступом к ресурсам;
  • осуществление ввода-вывода;
  • создание IPC-каналов;
  • управление электропитанием;
  • получение статистических сведений о системе;
  • другие возможности, поддерживаемые службами ядра.

На аппаратных платформах с процессорной архитектурой 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)

Выделение и освобождение памяти (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)

Генерация случайных чисел (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)

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

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

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

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

Прерывание IPC (ipc_api.h)

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

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

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

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

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

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

Использование фьютексов (sync.h)

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

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