KasperskyOS Community Edition 1.2

Методы служб ядра KasperskyOS

С точки зрения модуля безопасности Kaspersky Security Module ядро KasperskyOS является контейнером компонентов, предоставляющих службы. Список компонентов ядра содержится в файле Core.edl, расположенном в директории sysroot-*-kos/include/kl/core из состава KasperskyOS SDK. Также в этой директории находятся CDL-, IDL-файлы формальной спецификации ядра.

Методы служб ядра можно разделить на безопасные и потенциально опасные. Потенциально опасные методы могут быть использованы злоумышленником в компрометированном компоненте решения, чтобы, например, вызвать отказ, организовать скрытую передачу данных, захватить управление устройством ввода-вывода. Безопасные методы не могут быть использованы таким образом.

Доступ к методам служб ядра должен быть максимально ограничен политикой безопасности решения (принцип "Least Privilege"). Для этого нужно выполнить следующие требования:

  1. Разрешить доступ к безопасному методу только тем компонентам решения, которым этот метод нужен.
  2. Разрешить доступ к потенциально опасному методу только тем доверенным компонентам решения, которым этот метод нужен.
  3. Разрешить доступ к потенциально опасному методу только тем недоверенным компонентам решения, которым этот метод нужен, если только проверяемые условия доступа ограничивают возможности злонамеренного использования метода, или последствия злонамеренного использования метода допустимы с точки зрения безопасности.

    Например, недоверенному компоненту можно разрешить использовать ограниченный набор портов ввода-вывода, чтобы этот компонент не мог захватить управление устройствами ввода-вывода. Также, к примеру, скрытая передача данных между недоверенными компонентами может быть допустимой с точки зрения безопасности.

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

Служба виртуальной памяти

Служба ввода-вывода

Служба потоков исполнения

Служба дескрипторов

Служба процессов

Служба синхронизации

Службы файловой системы

Служба времени

Служба слоя аппаратных абстракций

Служба управления контроллером XHCI

Служба аудита

Служба профилирования

Служба управления изоляцией памяти для ввода-вывода

Служба соединений

Служба управления электропитанием

Служба уведомлений

Служба гипервизора

Службы доверенной среды исполнения

Служба прерывания IPC

Служба управления частотой процессоров

В начало
[Topic kernel_methods]

Служба виртуальной памяти

Служба предназначена для управления виртуальной памятью.

Сведения о методах службы приведены в таблице ниже.

Методы службы vmm.VMM (интерфейс kl.core.VMM)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Allocate

Назначение

Выделяет (резервирует и опционально фиксирует) регион виртуальной памяти.

Параметры

  • [in] addr – желаемый базовый адрес региона виртуальной памяти или 0, чтобы базовый адрес был выбран автоматически.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие параметры региона виртуальной памяти.
  • [out] va – базовый адрес выделенного региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

Commit

Назначение

Фиксирует зарезервированный методом Allocate регион виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – фиктивный параметр.
  • [out] rc – код возврата.

Позволяет исчерпать оперативную память.

Decommit

Назначение

Отменяет фиксацию региона виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [out] rc – код возврата.

Нет.

Protect

Назначение

Изменяет права доступа к региону виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие права доступа к региону виртуальной памяти.
  • [out] rc – код возврата.

Нет.

Free

Назначение

Освобождает регион виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [out] rc – код возврата.

Нет.

Query

Назначение

Позволяет получить сведения о странице виртуальной памяти.

Параметры

  • [in] va – адрес, входящий в страницу виртуальной памяти.
  • [out] info – последовательность, содержащая сведения о странице виртуальной памяти.
  • [out] rc – код возврата.

Нет.

MdlCreate

Назначение

Создает буфер MDL.

Параметры

  • [in] size – размер буфера MDL в байтах.
  • [in] prot – флаги, задающие права доступа к буферу MDL.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

MdlCreateFromVm

Назначение

Создает буфер MDL из физической памяти, отображенной на заданный регион виртуальной памяти, и отображает созданный буфер MDL на этот регион.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие права доступа к буферу MDL.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

MdlGetSize

Назначение

Позволяет получить размер буфера MDL.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] size – размер буфера MDL в байтах.
  • [out] rc – код возврата.

Нет.

MdlMap

Назначение

Резервирует регион виртуальной памяти и отображает на него буфер MDL.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [in] offset – смещение в буфере MDL, с которого нужно начать отображение, в байтах.
  • [in] length – размер части буфера MDL, которую нужно отобразить, в байтах.
  • [in] hint – желаемый базовый адрес региона виртуальной памяти или 0, чтобы базовый адрес был выбран автоматически.
  • [in] prot – флаги, задающие параметры региона виртуальной памяти.
  • [out] address – базовый адрес региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Создать разделяемую память для межпроцессного взаимодействия, скрытого от модуля безопасности, если дескрипторами одного буфера MDL владеют несколько процессов (маски прав дескрипторов должны разрешать отображение буфера MDL).
  • Исчерпать память ядра, создавая в ней множество объектов.

MdlClone

Назначение

Создает буфер MDL на основе существующего.

Буфер MDL создается из тех же регионов физической памяти, что и оригинальный.

Параметры

  • [in] originHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует оригинальный буфер MDL.
  • [in] offset – смещение в оригинальном буфере MDL, с которого нужно начать дублирование, в байтах.
  • [in] length – размер части оригинального буфера MDL, которую нужно дублировать, в байтах.
  • [out] cloneHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует созданный буфер MDL.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

В начало
[Topic kernel_methods_vmm]

Служба ввода-вывода

Служба предназначена для работы с портами ввода-вывода, MMIO, DMA, прерываниями.

Сведения о методах службы приведены в таблице ниже.

Методы службы io.IO (интерфейс kl.core.IO)

Метод

Назначение и параметры метода

Потенциальная опасность метода

RegisterPort

Назначение

Регистрирует последовательность портов ввода-вывода.

Параметры

  • [in] base – адрес первого порта ввода-вывода в последовательности.
  • [in] size – число портов ввода-вывода в последовательности.
  • [out] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует последовательность портов ввода-вывода.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Захватить порты ввода-вывода (рекомендуется контролировать адрес первого порта ввода-вывода и число портов ввода-вывода в последовательности).
  • Исчерпать память ядра, создавая в ней множество объектов.

RegisterMmio

Назначение

Регистрирует регион памяти MMIO.

Параметры

  • [in] base – базовый адрес региона памяти MMIO.
  • [in] size – размер региона памяти MMIO в байтах.
  • [out] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует регион памяти MMIO.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

RegisterDma

Назначение

Создает буфер DMA.

Параметры

  • [in] size – размер буфера DMA в байтах.
  • [in] flags – флаги, задающие параметры буфера DMA.
  • [in] order – параметр, задающий минимальное число страниц памяти (2^order) в блоке.
  • [out] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер DMA.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

RegisterIrq

Назначение

Регистрирует прерывание.

Параметры

  • [in] irq – номер прерывания.
  • [out] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует прерывание.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

MapMem

Назначение

Резервирует регион виртуальной памяти и отображает на него регион памяти MMIO.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует регион памяти MMIO.
  • [in] prot – флаги, задающие права доступа к региону виртуальной памяти.
  • [in] attr – флаги, задающие параметры региона виртуальной памяти (например, использование кеширования).
  • [out] address – базовый адрес региона виртуальной памяти.
  • [out] mapping – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор используется для освобождения региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Захватить управление устройством при отображении региона памяти MMIO на регион виртуальной памяти (рекомендуется контролировать базовый адрес и размер региона памяти MMIO при вызове метода RegisterMmio).
  • Создать разделяемую память для межпроцессного взаимодействия, скрытого от модуля безопасности, если дескрипторами одного региона памяти MMIO владеют несколько процессов (маски прав дескрипторов должны разрешать отображение региона памяти MMIO).
  • Исчерпать память ядра, создавая в ней множество объектов.

PermitPort

Назначение

Открывает доступ к портам ввода-вывода.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует последовательность портов ввода-вывода.
  • [out] access – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор используется для закрытия доступа к портам ввода-вывода.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Захватить управление устройством (рекомендуется контролировать адрес первого порта ввода-вывода и число портов ввода-вывода в последовательности при вызове метода RegisterPort).
  • Исчерпать память ядра, создавая в ней множество объектов.

AttachIrq

Назначение

Привязывает вызывающий поток исполнения к прерыванию.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует прерывание.
  • [in] flags – флаги, задающие параметры прерывания.
  • [out] delivery – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор является клиентским IPC-дескриптором, который используется обработчиком прерывания.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Забрать процессорное время у остальных потоков исполнения, в том числе из других процессов (поток исполнения, выполнивший привязку к прерыванию, становится потоком реального времени).
  • Сделать невозможным завершение процесса из другого процесса (процесс, поток которого выполнил привязку к прерыванию, невозможно завершить из другого процесса).
  • Остановить операционную систему (при возникновении необработанного исключения в потоке исполнения, обрабатывающем прерывание, останавливается операционная система).
  • Заблокировать, замедлить или некорректно выполнить обработку прерывания (рекомендуется контролировать номер прерывания при вызове метода RegisterIrq).
  • Исчерпать память ядра, создавая в ней множество объектов.

DetachIrq

Назначение

Отправляет потоку исполнения запрос, в результате выполнения которого поток должен выполнить отвязывание от прерывания.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует прерывание.
  • [out] rc – код возврата.

Позволяет прекратить обработку прерывания в другом процессе.

EnableIrq

Назначение

Разрешает (демаскирует) прерывание.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует прерывание.
  • [out] rc – код возврата.

Позволяет разрешить прерывание на уровне системы.

DisableIrq

Назначение

Запрещает (маскирует) прерывание.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует прерывание.
  • [out] rc – код возврата.

Позволяет запретить прерывание на уровне системы.

ModifyDma

Назначение

Изменяет параметры кеширования буфера DMA.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер DMA.
  • [in] flags – флаги, задающие параметры кеширования буфера DMA.
  • [out] rc – код возврата.

Нет.

MapDma

Назначение

Резервирует регион виртуальной памяти и отображает на него буфер DMA.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер DMA.
  • [in] offset – смещение в буфере DMA, с которого нужно начать отображение, в байтах.
  • [in] length – размер части буфера DMA, которую нужно отобразить, в байтах.
  • [in] hint – желаемый базовый адрес региона виртуальной памяти или 0, чтобы базовый адрес был выбран автоматически.
  • [in] prot – флаги, задающие права доступа к региону виртуальной памяти.
  • [out] address – базовый адрес региона виртуальной памяти.
  • [out] mapping – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор используется для освобождения региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Создать разделяемую память для межпроцессного взаимодействия, скрытого от модуля безопасности, если дескрипторами одного буфера DMA владеют несколько процессов (маски прав дескрипторов должны разрешать отображение буфера DMA).
  • Исчерпать память ядра, создавая в ней множество объектов.

DmaGetInfo

Назначение

Позволяет получить сведения о буфере DMA.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер DMA.
  • [out] flags – флаги, отражающие параметры DMA.
  • [out] order – параметр, отражающий минимальное число страниц памяти (2^order) в блоке.
  • [out] size – размер буфера DMA в байтах.
  • [out] count – число блоков.
  • [out] frames – последовательность, содержащая адреса и размеры блоков.
  • [out] rc – код возврата.

Нет.

DmaGetPhysInfo

Назначение

Позволяет получить сведения о физической памяти, на основе которой создан буфер DMA.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер DMA.
  • [out] count – число блоков.
  • [out] frames – последовательность, содержащая адреса и размеры блоков.
  • [out] rc – код возврата.

Нет.

BeginDma

Назначение

Открывает доступ к буферу DMA для устройства.

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер DMA.
  • [out] iomapping – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект ядра, который содержит адреса и размеры блоков, необходимые устройству, чтобы использовать буфер DMA. Адреса памяти, используемые устройством, могут быть физическими или виртуальными в зависимости от того, задействован ли IOMMU.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

В начало
[Topic kernel_methods_io]

Служба потоков исполнения

Служба предназначена для управления потоками исполнения.

Сведения о методах службы приведены в таблице ниже.

Методы службы thread.Thread (интерфейс kl.core.Thread)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Create

Назначение

Создает поток исполнения.

Параметры

  • [out] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [out] tid – идентификатор потока исполнения (TID).
  • [in] priority – приоритет потока исполнения.
  • [in] stackSize – размер стека потока исполнения в байтах или 0, чтобы был использован размер по умолчанию, заданный при создании процесса.
  • [in] routine – указатель на функцию, вызываемую при запуске потока исполнения.
  • [in] context – указатель на функцию, выполняемую потоком исполнения.
  • [in] context2 – указатель на параметры, передаваемые функции, заданной через параметр context.
  • [in] flags – флаги, задающие параметры создания потока исполнения.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Создать поток исполнения реального времени, который заберет все процессорное время у остальных потоков исполнения, в том числе из других процессов (рекомендуется контролировать параметры создания потока исполнения).
  • Создать множество потоков исполнения, в том числе с высоким приоритетом, чтобы сократить процессорное время, доступное потокам других процессов (рекомендуется контролировать приоритет потока исполнения).
  • Исчерпать оперативную память.
  • Исчерпать память ядра, создавая в ней множество объектов.

OpenCurrent

Назначение

Создает дескриптор вызывающего потока исполнения.

Параметры

  • [out] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [out] rc – код возврата.

Нет.

Suspend

Назначение

Блокирует вызывающий поток исполнения.

Параметры

  • [out] rc – код возврата.

Позволяет заблокировать поток исполнения, который захватил созданный в разделяемой памяти объект синхронизации, который ожидается потоком исполнения другого процесса. В результате поток исполнения другого процесса может быть заблокированным сколь угодно долго.

Resume

Назначение

Возобновляет исполнение заблокированного потока.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [out] rc – код возврата.

Нет.

Terminate

Назначение

Завершает поток исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [in] code – код завершения потока исполнения.
  • [out] rc – код возврата.

Нет.

Exit

Назначение

Завершает вызывающий поток исполнения.

Параметры

  • [in] code – код завершения потока исполнения.
  • [out] rc – код возврата.

Нет.

Wait

Назначение

Блокирует вызывающий поток исполнения до завершения заданного потока исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [in] msec – время ожидания завершения потока исполнения в миллисекундах.
  • [out] code – код завершения потока исполнения.
  • [out] rc – код возврата.

Нет.

SetPriority

Назначение

Задает приоритет потока исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [in] priority – приоритет потока исполнения.
  • [out] rc – код возврата.

Позволяет повысить приоритет потока исполнения, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов.

Рекомендуется контролировать приоритет потока исполнения.

SetTls

Назначение

Задает базовый адрес локальной памяти потока исполнения (TLS) для вызывающего потока исполнения.

Параметры

  • [in] va – указатель на локальную память потока исполнения.
  • [out] rc – код возврата.

Нет.

Sleep

Назначение

Блокирует вызывающий поток исполнения на заданное время.

Параметры

  • [in] mdelay – время блокировки потока исполнения в миллисекундах.
  • [out] rc – код возврата.

Нет.

GetInfo

Назначение

Позволяет получить сведения о потоке исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [out] info – структура, содержащая базовый адрес стека потока исполнения и его размер в байтах, а также идентификатор потока исполнения (TID).
  • [out] rc – код возврата.

Нет.

DetachIrq

Назначение

Отвязывает вызывающий поток исполнения от прерывания, обрабатываемого в его контексте.

Параметры

  • [out] rc – код возврата.

Нет.

GetAffinity

Назначение

Позволяет получить маску сходства потока исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [out] mask – маска сходства потока исполнения.
  • [out] rc – код возврата.

Нет.

SetAffinity

Назначение

Задает маску сходства потока исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [in] mask – маска сходства потока исполнения.
  • [out] rc – код возврата.

Нет.

SetSchedPolicy

Назначение

Задает класс планирования и приоритет потока исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [in] policy – класс планирования потока исполнения.
  • [in] priority – приоритет потока исполнения.
  • [in] param – объединение, содержащее параметры класса планирования потока исполнения.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Сделать поток исполнения потоком исполнения реального времени, который заберет все процессорное время у остальных потоков исполнения, в том числе из других процессов (рекомендуется контролировать класс планирования потока исполнения).
  • Повысить приоритет потока исполнения, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов (рекомендуется контролировать приоритет потока исполнения).

GetSchedPolicy

Назначение

Позволяет получить сведения о классе планирования и приоритете потока исполнения.

Параметры

  • [in] thread – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует поток исполнения.
  • [out] policy – класс планирования потока исполнения.
  • [out] priority – приоритет потока исполнения.
  • [out] param – объединение, содержащее параметры класса планирования потока исполнения.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_threads]

Служба дескрипторов

Служба предназначена для выполнения операций с дескрипторами.

Сведения о методах службы приведены в таблице ниже.

Методы службы handle.Handle (интерфейс kl.core.Handle)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Copy

Назначение

Копирует дескриптор.

В результате копирования вызывающий процесс получает потомка дескриптора.

Параметры

  • [in] inHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Поле дескриптора содержит оригинальный дескриптор.
  • [in] newRightsMask – маска прав потомка дескриптора.
  • [in] copyBadge – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект контекста передачи ресурса.
  • [out] outHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле потомка дескриптора и поле маски прав потомка дескриптора.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

CreateUserObject

Назначение

Создает дескриптор.

Параметры

  • [in] type – тип дескриптора.
  • [in] rights – маска прав дескриптора.
  • [in] context – указатель на данные, которые нужно ассоциировать с дескриптором.
  • [in] ipcChannel – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор является серверным IPC-дескриптором.
  • [in] riid – идентификатор службы (RIID).
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле созданного дескриптора и поле маски прав созданного дескриптора.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

Close

Назначение

Закрывает дескриптор.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора.
  • [out] rc – код возврата.

Нет.

Connect

Назначение

Создает и связывает между собой клиентский, серверный и слушающий IPC-дескрипторы.

Параметры

  • [in] server – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует серверный процесс.
  • [in] srListener – слушающий дескриптор из пространства дескрипторов серверного процесса или значение 0xFFFFFFFF, чтобы создать его.
  • [in] createSrEndpoint – значение, которое задает, нужно ли создавать серверный IPC-дескриптор в пространстве дескрипторов серверного процесса (0 – нет, другое число – да).
  • [in] client – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует клиентский процесс.
  • [out] outSrListener – слушающий дескриптор из пространства дескрипторов серверного процесса.
  • [out] outSrEndpoint – серверный IPC-дескриптор из пространства дескрипторов серверного процесса.
  • [out] outClEndpoint – клиентский IPC-дескриптор из пространства дескрипторов клиентского процесса.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

SecurityConnect

Назначение

Создает клиентский IPC-дескриптор для обращения к модулю безопасности Kaspersky Security Module через интерфейс безопасности.

Параметры

  • [out] client – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора.
  • [out] rc – код возврата.

Позволяет исчерпать множество возможных значений дескрипторов процесса ядра.

GetSidByHandle

Назначение

Позволяет получить идентификатор безопасности (SID) по дескриптору.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора.
  • [out] sid – идентификатор безопасности (SID).
  • [out] rc – код возврата.

Нет.

Revoke

Назначение

Закрывает дескриптор и отзывает его потомков.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора.
  • [out] rc – код возврата.

Нет.

RevokeSubtree

Назначение

Отзывает дескрипторы, которые образуют поддерево наследования заданного дескриптора.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескрипторы, образующие поддерево наследования этого дескриптора, отзываются.
  • [in] badge – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект контекста передачи ресурса, который определяет поддерево наследования дескрипторов для отзыва. Корневым узлом этого поддерева является дескриптор, который порожден передачей или копированием дескриптора, заданного через параметр handle, в ассоциации с объектом контекста передачи ресурса.
  • [out] rc – код возврата.

Нет.

CreateBadge

Назначение

Создает объект контекста передачи ресурса и настраивает механизм уведомлений для контроля жизненного цикла этого объекта.

Параметры

  • [in] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [in] notifyContext – идентификатор записи вида "ресурс – маска событий" в приемнике уведомлений.
  • [in] badgeContext – указатель на данные, которые нужно ассоциировать с передачей дескриптора.
  • [out] badge – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект контекста передачи ресурса.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

В начало
[Topic kernel_methods_handles]

Служба процессов

Служба предназначена для управления процессами.

Сведения о методах службы приведены в таблице ниже.

Методы службы task.Task (интерфейс kl.core.Task)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Create

Назначение

Создает процесс.

Параметры

  • [in] name – имя процесса.
  • [in] eiid – имя класса процесса.
  • [in] path – имя исполняемого файла в ROMFS.
  • [in] stackSize – размер стека потока исполнения, используемый по умолчанию при создании потоков процесса, в байтах.
  • [in] priority – приоритет начального потока исполнения.
  • [in] flags – флаги, задающие параметры создания процесса.
  • [out] child – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует созданный процесс.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Создать процесс, который будет привилегированным с точки зрения политики безопасности решения (указав имя класса процессов с привилегиями).
  • Зарезервировать имя процесса, чтобы другой процесс с таким именем нельзя было создать.
  • Создать процесс, при возникновении необработанного исключения в котором операционная система останавливается.
  • Загрузить в память процесса код из исполняемого файла для последующего исполнения.
  • Исчерпать оперативную память, создавая множество процессов.
  • Исчерпать память ядра, создавая в ней множество объектов.

LoadSeg

Назначение

Загружает сегмент ELF-образа в память процесса из буфера MDL.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] mdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий сегмент ELF-образа.
  • [in] segAttr – структура, содержащая параметры загрузки сегмента ELF-образа.
  • [out] rc – код возврата.
  • [out] retaddr – базовый адрес региона виртуальной памяти процесса, куда загружен сегмент ELF-образа.

Позволяет загрузить в память процесса код для последующего исполнения.

VmReserve

Назначение

Резервирует регион виртуальной памяти в процессе, который был создан "пустым".

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] addr – желаемый базовый адрес региона виртуальной памяти или 0, чтобы этот адрес был выбран автоматически.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие параметры региона виртуальной памяти.
  • [out] outAddr – базовый адрес зарезервированного региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Зарезервировать регионы виртуальной памяти в другом процессе, который был создан "пустым" и еще не запущен, при наличии его дескриптора. (Маска прав дескриптора должна разрешать резервирование виртуальной памяти.)

VmFree

Назначение

Освобождает регион виртуальной памяти, зарезервированный вызовом метода VmReserve в процессе, который был создан "пустым".

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] addr – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [out] rc – код возврата.

Позволяет освободить регионы виртуальной памяти в другом процессе, который был создан "пустым" и еще не запущен, при наличии его дескриптора. (Маска прав дескриптора должна разрешать освобождение виртуальной памяти.)

SetEntry

Назначение

Задает точку входа в программу и смещение загрузки ELF-образа.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] state – структура, содержащая адрес точки входа в программу и смещение загрузки ELF-образа в байтах.
  • [out] rc – код возврата.

Создает условия для запуска кода, загруженного в память процесса.

LoadElfSyms

Назначение

Загружает таблицу символов .symtab и таблицу строк .strtab из буферов MDL в память процесса, который был создан "пустым".

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] symMdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий таблицу символов .symtab.
  • [in] symSegAttr – структура, содержащая параметры загрузки таблицы символов .symtab.
  • [in] symSize – размер таблицы символов .symtab в байтах.
  • [in] strMdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий таблицу строк .strtab.
  • [in] strSegAttr – структура, содержащая параметры загрузки таблицы строк .strtab.
  • [in] strSize – размер таблицы строк .strtab в байтах.
  • [out] rc – код возврата.

Нет.

LoadElfHdr

Назначение

Записывает заголовок ELF-образа в PCB процесса, который был создан "пустым".

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] hdrData – последовательность, содержащая заголовок ELF-образа.
  • [out] rc – код возврата.

Нет.

SetEnv

Назначение

Записывает данные в SCP дочернего процесса.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует дочерний процесс.
  • [in] env – последовательность, содержащая данные для записи в SCP.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

FreeSelfEnv

Назначение

Удаляет SCP вызывающего процесса.

Параметры

  • [out] rc – код возврата.

Нет.

Resume

Назначение

Запускает процесс.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Запустить на исполнение код, загруженный в память процесса.
  • Запустить множество ранее созданных процессов, чтобы сократить вычислительные ресурсы, доступные другим процессам (рекомендуется контролировать приоритет начального потока исполнения при вызове метода Create).

Exit

Назначение

Завершает вызывающий процесс.

Параметры

  • [in] status – код завершения процесса.
  • [out] rc – код возврата.

Нет.

Terminate

Назначение

Завершает процесс.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [out] rc – код возврата.

Позволяет завершить другой процесс при наличии его дескриптора. (Маска прав дескриптора должна разрешать завершение процесса.)

GetExitInfo

Назначение

Позволяет получить сведения о завершившемся процессе.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует завершившейся процесс.
  • [out] status – значение, отражающее причину завершения процесса.
  • [out] info – объединение, содержащее сведения о завершившемся процессе.
  • [out] rc – код возврата.

Нет.

GetThreadContext

Назначение

Позволяет получить контекст потока исполнения, входящего в процесс, который находится в "замороженном" состоянии.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс, который находится в "замороженном" состоянии.
  • [in] index – индекс потока исполнения. Используется для перечисления потоков исполнения. Нумерация начинается с нуля. Нулевой индекс имеет поток исполнения, в котором возникло необработанное исключение.
  • [out] context – структура, содержащая идентификатор (TID) и контекст потока исполнения.
  • [out] rc – код возврата.

Позволяет нарушить изоляцию процесса, который находится в "замороженном" состоянии. Например, контекст потока исполнения может содержать значения переменных.

GetNextVmRegion

Назначение

Позволяет получить сведения о регионе виртуальной памяти, принадлежащем процессу, который находится "замороженном" состоянии.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс, который находится в "замороженном" состоянии.
  • [in] after – адрес, после которого размещен регион виртуальной памяти.
  • [out] next – базовый адрес региона виртуальной памяти.
  • [out] size – размер региона виртуальной памяти в байтах.
  • [out] flags – флаги, отражающие параметры региона виртуальной памяти.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, отображенный на регион виртуальной памяти.
  • [out] rc – код возврата.

Позволяет нарушить изоляцию процесса, который находится в "замороженном" состоянии. Изоляция нарушается, так как открывается доступ к региону памяти процесса.

TerminateAfterFreezing

Назначение

Завершает процесс, который находится в "замороженном" состоянии.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс, который находится в "замороженном" состоянии.
  • [out] rc – код возврата.

Позволяет завершить процесс, который находится в "замороженном" состоянии. Это не дает получить сведения об этом процессе для диагностики.

GetName

Назначение

Позволяет получить имя вызывающего процесса.

Параметры

  • [out] name – имя процесса.
  • [out] rc – код возврата.

Нет.

GetPath

Назначение

Позволяет получить имя исполняемого файла (в ROMFS), из которого создан вызывающий процесс.

Параметры

  • [out] path – имя исполняемого файла.
  • [out] rc – код возврата.

Нет.

GetInitialThreadPriority

Назначение

Позволяет получить приоритет начального потока процесса.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [out] priority – приоритет начального потока исполнения.
  • [out] rc – код возврата.

Нет.

SetInitialThreadPriority

Назначение

Задает приоритет начального потока процесса.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] priority – приоритет начального потока исполнения.
  • [out] rc – код возврата.

Позволяет повысить приоритет начального потока процесса, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов.

Рекомендуется контролировать приоритет начального потока исполнения.

GetTasksList

Назначение

Позволяет получить сведения о существующих процессах.

Параметры

  • [out] notice – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений, который настроен на получение уведомлений о завершении процессов.
  • [out] strings – последовательность, содержащая параметры процессов.
  • [out] pids – последовательность, содержащая идентификаторы процессов (PID каждого процесса).
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

SetInitialThreadSchedPolicy

Назначение

Задает класс планирования и приоритет начального потока процесса.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] policy – класс планирования начального потока процесса.
  • [in] priority – приоритет начального потока процесса.
  • [in] params – объединение, содержащее параметры класса планирования начального потока процесса.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Сделать начальный поток процесса потоком исполнения реального времени, который заберет все процессорное время у остальных потоков исполнения, в том числе из других процессов (рекомендуется контролировать класс планирования начального потока процесса).
  • Повысить приоритет начального потока процесса, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов (рекомендуется контролировать приоритет начального потока процесса).

ReseedAslr

Назначение

Задает начальное значение генератора случайных чисел для поддержки ASLR.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] seed – последовательность, содержащая начальное значение генератора случайных чисел.
  • [out] rc – код возврата.

Нет.

GetElfSyms

Назначение

Позволяет получить адрес и размер таблицы символов .symtab и таблицы строк .strtab для вызывающего процесса.

Параметры

  • [out] relocBase – смещение загрузки ELF-образа в байтах.
  • [out] syms – адрес таблицы символов .symtab.
  • [out] symsCnt – размер таблицы символов .symtab в байтах.
  • [out] strs – адрес таблицы строк .strtab.
  • [out] strsSize – размер таблицы строк .strtab в байтах.
  • [out] rc – код возврата.

Нет.

TransferHandle

Назначение

Передает дескриптор процессу, который еще не запущен.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] srcHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Поле дескриптора содержит передаваемый дескриптор.
  • [in] srcBadge – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект контекста передачи ресурса.
  • [in] dstRights – маска прав потомка передаваемого дескриптора.
  • [out] dstHandle – значение потомка переданного дескриптора (из пространства дескрипторов процесса, который получил дескриптор).
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

GetPid

Назначение

Позволяет получить идентификатор процесса (PID).

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [out] pid – идентификатор процесса.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_processes]

Служба синхронизации

Служба предназначена для работы с фьютексами.

Сведения о методах службы приведены в таблице ниже.

Методы службы sync.Sync (интерфейс kl.core.Sync)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Wait

Назначение

Блокирует исполнение вызывающего потока, если значение фьютекса равно ожидаемому.

Параметры

  • [in] ptr – указатель на фьютекс.
  • [in] val – ожидаемое значение фьютекса.
  • [in] delay – максимальное время блокировки в миллисекундах.
  • [out] outDelay – фактическое время блокировки в миллисекундах.
  • [out] rc – код возврата.

Нет.

Wake

Назначение

Возобновляет исполнение потоков, заблокированных вызовом метода Wait с заданным фьютексом.

Параметры

  • [in] ptr – указатель на фьютекс.
  • [in] nThreads – максимальное число потоков, исполнение которых может быть возобновлено.
  • [out] wokenCnt – фактическое число потоков, исполнение которых возобновлено.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_sync]

Службы файловой системы

Службы предназначены для работы с файловой системой ROMFS, используемой ядром KasperskyOS.

Сведения о методах служб приведены в таблицах ниже.

Методы службы fs.FS (интерфейс kl.core.FS)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Open

Назначение

Открывает файл.

Параметры

  • [in] name – имя файла.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует открытый файл.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

Close

Назначение

Закрывает файл.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует открытый файл.
  • [out] rc – код возврата.

Нет.

Read

Назначение

Читает данные из файла.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует открытый файл.
  • [in] sectorNumber – номер блока данных. Нумерация начинается с нуля.
  • [out] read – размер считанных данных в байтах.
  • [out] data – последовательность, содержащая считанные данные.
  • [out] rc – код возврата.

Нет.

GetSize

Назначение

Позволяет получить размер файла.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует открытый файл.
  • [out] size – размер файла в байтах.
  • [out] rc – код возврата.

Нет.

GetId

Назначение

Позволяет получить уникальный идентификатор файла.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует открытый файл.
  • [out] id – уникальный идентификатор файла.
  • [out] rc – код возврата.

Нет.

Count

Назначение

Позволяет получить число файлов в файловой системе.

Параметры

  • [out] count – число файлов в файловой системе.
  • [out] rc – код возврата.

Нет.

GetInfo

Назначение

Позволяет получить имя и уникальный идентификатор файла по индексу файла.

Параметры

  • [in] index – индекс файла. Нумерация начинается с нуля.
  • [in] nameLenMax – размер буфера для сохранения имени файла.
  • [out] name – имя файла.
  • [out] id – уникальный идентификатор файла.
  • [out] rc – код возврата.

Нет.

GetFsSize

Назначение

Позволяет получить размер файловой системы.

Параметры

  • [out] fsSize – размер файловой системы в байтах.
  • [out] rc – код возврата.

Нет.

Методы службы fs.FSUnsafe (интерфейс kl.core.FSUnsafe)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Change

Назначение

Меняет образ файловой системы.

Вместо образа ROMFS, созданного при сборке решения, будет использоваться другой образ ROMFS, загруженный в память процесса.

Параметры

  • [in] base – указатель на образ файловой системы.
  • [in] size – размер образа файловой системы в байтах.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Использовать образ ROMFS, содержащий произвольные программы и данные.
  • Получить доступ на чтение к некоторым объектам ядра.

В начало
[Topic kernel_methods_fs]

Служба времени

Служба предназначена для установки системного времени.

Сведения о методах службы приведены в таблице ниже.

Методы службы time.Time (интерфейс kl.core.Time)

Метод

Назначение и параметры метода

Потенциальная опасность метода

SetSystemTime

Назначение

Устанавливает системное время.

Параметры

  • [in] secs – время, прошедшее с 1 января 1970 года, в секундах.
  • [in] nsecs – дополнительное время в наносекундах, которое складывается со временем, заданным через параметр secs.
  • [out] rc – код возврата.

Позволяет установить системное время.

SetSystemTimeAdj

Назначение

Запускает постепенную корректировку системного времени.

Параметры

  • [in] adj – структура, содержащая интервал времени, на который нужно скорректировать системное время (sec*10^9+nsec наносекунд).
  • [in] slew – скорость корректировки системного времени (микросекунд в секунду).
  • [out] prev – структура, содержащая интервал времени, отражающий, на какое значение оставалось скорректировать системное время, чтобы предыдущая постепенная корректировка была полностью завершена (sec*10^9+nsec наносекунд).
  • [out] rc – код возврата.

Позволяет изменить системное время.

GetSystemTimeAdj

Назначение

Позволяет получить интервал времени, отражающий, на какое значение остается скорректировать системное время, чтобы постепенная корректировка была полностью завершена.

Параметры

  • [out] adj – структура, содержащая интервал времени, отражающий, на какое значение остается скорректировать системное время, чтобы постепенная корректировка была полностью завершена (sec*10^9+nsec наносекунд).
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_time]

Служба слоя аппаратных абстракций

Служба предназначена для получения значений параметров HAL, работы с привилегированными регистрами, очистки кеша процессора, выполнения диагностического вывода, а также получения случайных чисел, сгенерированных аппаратно.

Сведения о методах службы приведены в таблице ниже.

Методы службы hal.HAL (интерфейс kl.core.HAL)

Метод

Назначение и параметры метода

Потенциальная опасность метода

GetEnv

Назначение

Позволяет получить значение параметра HAL.

Параметры

  • [in] name – имя параметра.
  • [out] value – значение параметра.
  • [out] rc – код возврата.

Позволяет получить значения параметров HAL, которые могут представлять собой критические сведения о системе.

GetPrivReg

Назначение

Позволяет получить значение привилегированного регистра.

Параметры

  • [in] reg – имя регистра.
  • [out] val – значение регистра.
  • [out] rc – код возврата.

Позволяет организовать канал передачи данных с процессом, который имеет доступ к методу SetPrivReg или SetPrivRegRange.

Рекомендуется контролировать имя регистра.

SetPrivReg

Назначение

Задает значение привилегированного регистра.

Параметры

  • [in] reg – имя регистра.
  • [in] val – значение регистра.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Задать значение привилегированного регистра.
  • Организовать канал передачи данных с процессом, который имеет доступ к методу GetPrivReg или GetPrivRegRange.

Рекомендуется контролировать имя регистра.

GetPrivRegRange

Назначение

Позволяет получить значение привилегированного регистра.

Параметры

  • [in] regRange – имя диапазона регистров.
  • [in] offset – смещение регистра в диапазоне регистров.
  • [out] val – значение регистра.
  • [out] rc – код возврата.

Позволяет организовать канал передачи данных с процессом, который имеет доступ к методу SetPrivReg или SetPrivRegRange.

Рекомендуется контролировать имя диапазона регистров и смещение регистра в этом диапазоне.

SetPrivRegRange

Назначение

Задает значение привилегированного регистра.

Параметры

  • [in] regRange – имя диапазона регистров.
  • [in] offset – смещение регистра в диапазоне регистров.
  • [in] val – значение регистра.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Задать значение привилегированного регистра.
  • Организовать канал передачи данных с процессом, который имеет доступ к методу GetPrivReg или GetPrivRegRange.

Рекомендуется контролировать имя диапазона регистров и смещение регистра в этом диапазоне.

FlushCache

Назначение

Очищает кеш процессора.

Параметры

  • [in] type – значение, задающее тип кеша (кеш данных, кеш инструкций, кеш данных и кеш инструкций совместно).
  • [in] va – базовый адрес региона виртуальной памяти. Кеш, соответствующий этому региону, очищается.
  • [in] size – размер региона виртуальной памяти. Кеш, соответствующий этому региону, очищается.
  • [out] rc – код возврата.

Позволяет очистить кеш процессора.

DebugWrite

Назначение

Помещает данные в диагностический вывод, который записывается, например, в порт COM или USB (версии 3.0 или более поздней, с поддержкой DbC).

Параметры

  • [in] data – последовательность, содержащая данные для помещения в диагностический вывод.
  • [out] rc – код возврата.

Позволяет заполнить диагностический вывод фиктивными данными (например, неинформативными).

GetEntropy

Назначение

Позволяет получить случайные числа, сгенерированные аппаратно.

Параметры

  • [out] buffer – последовательность, содержащая случайные байтовые значения.
  • [in] size – число случайных байтовых значений.
  • [out] rc – код возврата.

Позволяет создать нагрузку на аппаратный генератор случайных чисел частыми вызовами метода, чтобы другие процессы не могли получить случайные числа с использованием этого генератора.

В начало
[Topic kernel_methods_hal]

Служба управления контроллером XHCI

Служба предназначена для выключения и повторного включения отладочного режима контроллера XHCI (с поддержкой DbC) при его перезагрузке.

Сведения о методах службы приведены в таблице ниже.

Методы службы xhcidbg.XHCIDBG (интерфейс kl.core.XHCIDBG)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Start

Назначение

Включает отладочный режим контроллера XHCI.

Параметры

  • [out] rc – код возврата.

Позволяет настроить контроллер XHCI, чтобы диагностический вывод выполнялся через порт USB (версии 3.0 или более поздней).

Stop

Назначение

Выключает отладочный режим контроллера XHCI.

Параметры

  • [out] rc – код возврата.

Позволяет настроить контроллер XHCI, чтобы диагностический вывод не выполнялся через порт USB (версии 3.0 или более поздней).

В начало
[Topic kernel_methods_xhcidbg]

Служба аудита

Служба предназначена для чтения сообщений из журналов ядра KasperskyOS. Этих журналов два: kss и core. Журнал kss содержит данные аудита безопасности. Журнал core содержит диагностический вывод. (Диагностический вывод включает как вывод ядра, так и вывод программ.)

Сведения о методах службы приведены в таблице ниже.

Методы службы audit.Audit (интерфейс kl.core.Audit)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Open

Назначение

Открывает журнал ядра для чтения.

Параметры

  • [in] name – имя журнала ядра (kss или core).
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует журнал ядра.
  • [out] rc – код возврата.

Нет.

Close

Назначение

Закрывает журнал ядра.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует журнал ядра.
  • [out] rc – код возврата.

Нет.

Read

Назначение

Позволяет получить сообщение из журнала ядра.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует журнал ядра.
  • [out] msg – последовательность, содержащая сообщение.
  • [out] outDropMsgs – число сообщений, не попавших в журнал ядра из-за переполнения буфера, в котором этот журнал хранится.
  • [out] rc – код возврата.

Позволяет извлечь сообщения из журнала ядра, чтобы их не получил другой процесс.

В начало
[Topic kernel_methods_audit]

Служба профилирования

Служба предназначена для профилирования и сбора покрытия кода, а также для получения значений счетчиков производительности.

Сведения о методах службы приведены в таблице ниже.

Методы службы profiler.Profiler (интерфейс kl.core.Profiler)

Метод

Назначение и параметры метода

Потенциальная опасность метода

GetCoverageData

Назначение

Позволяет получить сведения о покрытии кода.

Параметры

  • [in] index – индекс для перечисления объектных файлов, содержащих инструментированный код для получения сведений о покрытии. Нумерация начинается с нуля.
  • [out] buf – последовательность, содержащая сведения о покрытии кода объектного файла (в формате gcda).
  • [out] size – размер данных, содержащих сведения о покрытии кода объектного файла, в байтах.
  • [out] name – имя файла *.gcda, назначенное при компиляции.
  • [out] rc – код возврата.

Нет.

FlushGcov

Назначение

Выводит сведения о покрытии кода в формате gcda через UART.

Параметры

  • [out] rc – код возврата.

Нет.

FlushGcovFile

Назначение

Выводит сведения о покрытии кода в формате gcda через UART.

Параметры

  • [in] name – имя файла *.gcda, назначенное при компиляции.
  • [in] buf – указатель на буфер, содержащий сведения о покрытии кода в формате gcda.
  • [in] size – размер данных, содержащих сведения о покрытии кода.
  • [out] rc – код возврата.

Нет.

GetCounters

Назначение

Позволяет получить значения счетчиков производительности.

Параметры

  • [in] prefix – префикс для имен счетчиков производительности.
  • [in] names – последовательность, содержащая имена счетчиков производительности.
  • [out] values – последовательность, содержащая значения счетчиков производительности.
  • [out] rc – код возврата.

Нет.

ObjectGetStat

Назначение

Позволяет получить значения счетчиков производительности для системного ресурса (процесса или потока исполнения).

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует системный ресурс.
  • [in] names – последовательность, содержащая имена счетчиков производительности.
  • [out] values – последовательность, содержащая значения счетчиков производительности.
  • [out] rc – код возврата.

Нет.

SamplingStart

Назначение

Запускает семплирующее профилирование кода.

Результатом семплирующего профилирования является статистика исполнения кода, которая отражает длительность исполнения участков кода.

Параметры

  • [in] conf – флаги, задающие параметры профилирования.
  • [in] cpus – значение, задающее процессоры (вычислительные ядра) для профилирования.
  • [in] contSize – размер контейнера для сохранения данных, содержащих статистику исполнения кода, полученную в результате профилирования, в байтах. Контейнер создается в памяти ядра автоматически.
  • [in] interval – фиктивный параметр.
  • [out] rc – код возврата.

Нет.

SamplingStop

Назначение

Останавливает семплирующее профилирование кода.

Параметры

  • [out] rc – код возврата.

Нет.

SamplingRead

Назначение

Позволяет получить данные, содержащие статистику исполнения кода, полученную в результате семплирующего профилирования.

Параметры

  • [in] unsafeBuffer – указатель на буфер для сохранения контейнера, содержащего статистику исполнения кода, полученную в результате профилирования.
  • [in] size – размер буфера, указатель на который задан через параметр unsafeBuffer.
  • [out] realSize – размер сохраненного контейнера.
  • [in] timeout – время ожидания заполнения контейнера в миллисекундах.
  • [out] rc – код возврата.

Позволяет получить адреса и имена функций других процессов.

SamplingAddPidToList

Назначение

Добавляет процесс в список профилируемых.

Параметры

  • [in] pid – идентификатор процесса (PID).
  • [out] rc – код возврата.

Нет.

SamplingClearPidList

Назначение

Очищает список профилируемых процессов.

Параметры

  • [out] rc – код возврата.

Нет.

LoadSegInfo

Назначение

Сохраняет в ядре сведения о загружаемом сегменте ELF-образа. (Это требуется, чтобы статистика исполнения кода, полученная в результате семплирующего профилирования, содержала дополнительную информацию, которая позволяет ассоциировать эту статистику с исходным кодом.)

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] addr – адрес сегмента в памяти процесса.
  • [in] size – размер сегмента в байтах.
  • [in] offset – смещение сегмента в файле ELF в байтах.
  • [in] flags – флаги, задающие права доступа к сегменту.
  • [in] buildId – идентификатор сборки. Компоновщик записывает этот идентификатор в файл ELF.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

UnloadSegInfo

Назначение

Удаляет сведения о загружаемом сегменте ELF-образа, сохраненные в ядре методом LoadSegInfo.

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] addr – адрес сегмента в памяти процесса.
  • [in] size – размер сегмента в байтах.
  • [out] rc – код возврата.

Нет.

KcovAlloc

Назначение

Выделяет ресурсы, требуемые для сбора покрытия кода ядра, который осуществляется при обработке системных вызовов, выполняемых вызывающим процессом.

Параметры

  • [in] numThreads – максимальное число потоков исполнения, для которых будет выполняться сбор покрытия.
  • [in] maxPoints – максимальное число точек покрытия для одного потока исполнения.
  • [out] rc – код возврата.

Позволяет исчерпать оперативную память.

KcovFree

Назначение

Освобождает ресурсы, требуемые для сбора покрытия кода ядра, который осуществляется при обработке системных вызовов, выполняемых вызывающим процессом.

Параметры

  • [out] rc – код возврата.

Нет.

KcovStart

Назначение

Запускает сбор покрытия кода ядра, который осуществляется при обработке системных вызовов, выполняемых вызывающим потоком исполнения.

Параметры

  • [out] rc – код возврата.

Нет.

KcovStop

Назначение

Останавливает сбор покрытия кода ядра, который осуществляется при обработке системных вызовов, выполняемых вызывающим потоком исполнения. Также позволяет получить сведения о покрытии кода ядра.

Параметры

  • [in] points – указатель на буфер для сохранения сведений о покрытии кода ядра.
  • [in] maxPoints – максимальное число точек покрытия, которые можно сохранить в буфере, заданном через параметр points.
  • [out] numPoints – фактическое число точек покрытия, сохраненных в буфере, заданном через параметр points.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_profiler]

Служба управления изоляцией памяти для ввода-вывода

Служба предназначена для управления изоляцией регионов физической памяти, используемых устройствами на шине PCIe для DMA. (Изоляция обеспечивается IOMMU.)

Сведения о методах службы приведены в таблице ниже.

Методы службы iommu.IOMMU (интерфейс kl.core.IOMMU)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Attach

Назначение

Прикрепляет устройство на шине PCIe к домену IOMMU, ассоциированному с вызывающим процессом.

Параметры

  • [in] bdf – адрес устройства на шине PCIe в формате BDF.
  • [out] rc – код возврата.

Позволяет прикрепить устройство на шине PICIe, управляемое другим процессом, к домену IOMMU, ассоциированному с вызывающим процессом, что приведет к неработоспособности устройства.

Рекомендуется контролировать адрес устройства на шине PCIe.

Detach

Назначение

Открепляет устройство на шине PCIe от домена IOMMU, ассоциированного с вызывающим процессом.

Параметры

  • [in] bdf – адрес устройства на шине PCIe в формате BDF.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_iommu]

Служба соединений

Служба предназначена для динамического создания IPC-каналов.

Сведения о методах службы приведены в таблице ниже.

Методы службы cm.CM (интерфейс kl.core.CM)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Connect

Назначение

Выполняет запрос на создание IPC-канала с сервером для использования заданной службы.

Параметры

  • [in] server – имя сервера.
  • [in] service – квалифицированное имя службы.
  • [in] msecs – время ожидания выполнения запроса в миллисекундах.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор является клиентским IPC-дескриптором.
  • [out] id – идентификатор службы (RIID).
  • [out] rc – код возврата.

Позволяет создать нагрузку на сервер, отправляя множество запросов на создание IPC-канала.

Listen

Назначение

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

Параметры

  • [in] filter – фиктивный параметр.
  • [in] msecs – время ожидания запроса клиента в миллисекундах.
  • [out] client – имя клиента.
  • [out] service – квалифицированное имя службы.
  • [out] rc – код возврата.

Нет.

Drop

Назначение

Отклоняет запрос клиента на создание IPC-канала для использования заданной службы.

Параметры

  • [in] client – имя клиента.
  • [in] service – квалифицированное имя службы.
  • [out] rc – код возврата.

Нет.

Accept

Назначение

Принимает запрос клиента на создание IPC-канала для использования заданной службы.

Параметры

  • [in] client – имя клиента.
  • [in] service – квалифицированное имя службы.
  • [in] id – идентификатор службы.
  • [in] listener – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор является слушающим дескриптором.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор является серверным IPC-дескриптором.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_cm]

Служба управления электропитанием

Служба предназначена для изменения режима электропитания компьютера (например, выключения, перезагрузки), а также для включения и выключения процессоров (вычислительных ядер).

Сведения о методах службы приведены в таблице ниже.

Методы службы pm.PM (интерфейс kl.core.PM)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Request

Назначение

Выполняет запрос на изменение режима электропитания компьютера.

Параметры

  • [in] request – значение, задающее требуемый режим электропитания компьютера.
  • [out] rc – код возврата.

Позволяет изменить режим электропитания компьютера.

SetCpusOnline

Назначение

Выполняет запрос на включение и/или выключение процессоров.

Параметры

  • [in] request – значение, задающее множество процессоров в активном состоянии.
  • [in] timeout – время ожидания выполнения запроса в миллисекундах.
  • [out] rc – код возврата.

Позволяет выключить и включить процессоры.

GetCpusOnline

Назначение

Позволяет получить сведения о том, какие процессоры находятся в активном состоянии.

Параметры

  • [out] online – значение, отражающее множество процессоров в активном состоянии.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_pm]

Служба уведомлений

Служба предназначена для работы с уведомлениями о событиях, происходящих с ресурсами.

Сведения о методах службы приведены в таблице ниже.

Методы службы notice.Notice (интерфейс kl.core.Notice)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Create

Назначение

Создает приемник уведомлений.

Параметры

  • [out] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

SubscribeToObject

Назначение

Добавляет запись вида "ресурс – маска событий" в приемник уведомлений, чтобы он получал уведомления о событиях, которые происходят с заданным ресурсом и соответствуют заданной маске событий.

Параметры

  • [in] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [in] object – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует ресурс.
  • [in] evMask – маска событий.
  • [in] evId – идентификатор записи вида "ресурс – маска событий".
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

UnsubscribeFromEvent

Назначение

Удаляет записи вида "ресурс – маска событий" с заданным идентификатором из приемника уведомлений, чтобы он не получал уведомления о событиях, соответствующих этим записям.

Параметры

  • [in] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [in] evId – идентификатор записи вида "ресурс – маска событий".
  • [out] rc – код возврата.

Нет.

UnsubscribeFromObject

Назначение

Удаляет записи вида "ресурс – маска событий", соответствующие заданному ресурсу, из приемника уведомлений, чтобы он не получал уведомления о событиях, соответствующих этим записям.

Параметры

  • [in] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [in] object – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует ресурс.
  • [out] rc – код возврата.

Нет.

GetEvent

Назначение

Извлекает уведомления из приемника.

Параметры

  • [in] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [in] mdelay – время ожидания появления уведомлений в приемнике в миллисекундах.
  • [out] events – последовательность уведомлений, которые представляют собой структуры, содержащие идентификатор записи вида "ресурс – маска событий" и маску событий, произошедших с ресурсом.
  • [out] rc – код возврата.

Нет.

DropAndWake

Назначение

Удаляет все записи вида "ресурс – маска событий"из заданного приемника уведомлений; возобновляет исполнение всех потоков, ожидающих появления уведомлений в заданном приемнике; опционально запрещает добавление записей вида "ресурс – маска событий" в заданный приемник уведомлений.

Параметры

  • [in] notify – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений.
  • [in] finish – значение, определяющее будет ли запрещено добавление записей вида "ресурс – маска событий" (0 – не будет запрещено, 1 – будет запрещено).
  • [out] rc – код возврата.

Нет.

SetObjectEvent

Назначение

Сигнализирует, что события из заданной маски событий произошли с заданным пользовательским ресурсом.

Параметры

  • [in] object – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует пользовательский ресурс.
  • [in] evMask – маска событий, о которых требуется сигнализировать.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_notice]

Служба гипервизора

Служба предназначена для работы с гипервизором.

Методы службы hypervisor.Hypervisor (интерфейс kl.core.Hypervisor) являются потенциально опасными. Доступ к этим методам можно разрешать только специальной программе vmapp.

В начало
[Topic kernel_methods_hypervisor]

Службы доверенной среды исполнения

Службы предназначены для передачи данных между доверенной средой исполнения (англ. Trusted Execution Environment, TEE) и общей средой исполнения (англ. Rich Execution Environment, REE), а также для получения доступа к физической памяти REE из TEE.

Сведения о методах служб приведены в таблицах ниже.

Методы службы tee.TEE (интерфейс kl.core.TEE)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Dispatch

Назначение

Отправляет и принимает сообщения, передающиеся между TEE и REE.

Метод используется как в TEE, так и в REE.

Параметры

  • [in] msgIn – структура, содержащая запрос для TEE (при вызове метода в REE) или ответ для REE (при вызове метода в TEE).
  • [out] msgOut – структура, содержащая ответ от TEE (при вызове метода в REE) или запрос от REE (при вызове метода в TEE).
  • [out] rc – код возврата.

Позволяет процессу в REE получить ответ от TEE на запрос другого процесса в REE.

FreeToken

Назначение

Освобождает значения уникальных идентификаторов сообщений, передающихся между TEE и REE. (Эти значения требуется освободить, чтобы они стали доступными для повторного использования.)

Метод используется в REE.

Параметры

  • [in] token – значение уникального идентификатора сообщения.
  • [out] rc – код возврата.

Позволяет освободить значения, используемые другими процессами в REE в качестве уникальных идентификаторов сообщений, передающихся между TEE и REE.

Методы службы tee.TEEVMM (интерфейс kl.core.TEEVMM)

Метод

Назначение и параметры метода

Потенциальная опасность метода

MdlAllocate

Назначение

Создает заготовку буфера MDL для последующего добавления в нее физической памяти из REE.

Метод используется в TEE.

Параметры

  • [in] size – размер буфера MDL в байтах.
  • [in] prot – флаги, задающие права доступа к буферу MDL.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

MdlAddFrame

Назначение

Добавляет регион физической памяти REE в заготовку буфера MDL, созданную методом MdlAllocate.

Метод используется в TEE.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [in] pa – базовый адрес региона физической памяти.
  • [in] pages – размер региона физической памяти в страницах памяти.
  • [out] rc – код возврата.

Позволяет получить доступ к произвольному региону физической памяти REE из TEE.

В начало
[Topic kernel_methods_tee]

Служба прерывания IPC

Служба предназначена для прерывания блокирующих системных вызовов Call() и Recv(). (Это может потребоваться, например, для корректного завершения процесса.)

Сведения о методах службы приведены в таблице ниже.

Методы службы ipc.IPC (интерфейс kl.core.IPC)

Метод

Назначение и параметры метода

Потенциальная опасность метода

CreateSyncObject

Назначение

Создает объект синхронизации IPC.

Объект синхронизации IPC используется для прерывания блокирующих системных вызовов Call() и Recv() в потоках вызывающего процесса. Call() может быть прерван только тогда, когда он ожидает вызова Recv() сервером. Recv() может быть прерван только тогда, когда он ожидает получения IPC-запроса от клиента.

Дескриптор объекта синхронизации IPC не может быть передан другому процессу, так как в маске прав этого дескриптора не установлен необходимый для этого флаг.

Параметры

  • [out] syncHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект синхронизации IPC.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

SetInterrupt

Назначение

Переводит заданный объект синхронизации IPC в состояние, при котором системные вызовы Call() и Recv() прерываются.

Параметры

  • [in] syncHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект синхронизации IPC.
  • [out] rc – код возврата.

Нет.

ClearInterrupt

Назначение

Переводит заданный объект синхронизации IPC в состояние, при котором системные вызовы Call() и Recv() не прерываются.

Параметры

  • [in] syncHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект синхронизации IPC.
  • [out] rc – код возврата.

Нет.

В начало
[Topic kernel_methods_ipc_intr]

Служба управления частотой процессоров

Служба предназначена для изменения частоты процессоров (вычислительных ядер).

Сведения о методах службы приведены в таблице ниже.

Методы службы cpufreq.CpuFreq (интерфейс kl.core.CpuFreq)

Метод

Назначение и параметры метода

Потенциальная опасность метода

GetLayout

Назначение

Позволяет получить сведения о процессорных группах.

В сведениях о процессорных группах перечислены существующие процессорные группы с указанием возможных значений параметра производительности для каждой из них. Этим параметром является комбинация соответствующих друг другу частоты и напряжения (англ. Operating Performance Point, OPP). Частота приводится в кГц, напряжение приводится в мкВ.

Параметры

  • [out] layout – последовательность, содержащая сведения о процессорных группах.
  • [out] rc – код возврата.

Нет.

GetCurOppId

Назначение

Позволяет получить индекс текущего OPP для заданной процессорной группы.

Параметры

  • [in] cpuGroupId – индекс процессорной группы. Нумерация начинается с нуля.
  • [out] oppId – индекс текущего OPP. Нумерация начинается с нуля.
  • [out] rc – код возврата.

Нет.

SetOppId

Назначение

Устанавливает заданный OPP для заданной процессорной группы.

Параметры

  • [in] GroupId – индекс процессорной группы. Нумерация начинается с нуля.
  • [in] oppId – индекс OPP. Нумерация начинается с нуля.
  • [out] rc – код возврата.

Позволяет изменить частоту процессорной группы.

В начало
[Topic kernel_methods_cpufreq]