KasperskyOS Community Edition 1.1

Методы служб ядра 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 – размер буфера MDL в байтах.
  • [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 – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор используется обработчиком прерывания.
  • [out] rc – код возврата.

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

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

AttachIrqEx

Назначение

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

Параметры

  • [in] resource – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует прерывание.
  • [in] flags – флаги, отражающие характеристики прерывания.
  • [in] futexPtr – указатель на фьютекс.
  • [out] delivery – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор используется обработчиком прерывания.
  • [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] tid – идентификатор потока исполнения (TID).
  • [in] priority – значение, задающее приоритет потока исполнения.
  • [in] stackSize – размер стека для потока исполнения или 0, чтобы был задан размер по умолчанию.
  • [in] routine – указатель на функцию, которая будет выполнена при создании потока исполнения.
  • [in] context – указатель на функцию, которая будет выполнена в контексте потока исполнения.
  • [in] context2 – указатель на параметры, которые будут переданы функции, заданной через параметр context.
  • [in] flags – флаги, задающие параметры создания потока исполнения.
  • [out] rc – код возврата.

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

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

Suspend

Назначение

Блокирует поток исполнения.

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [out] rc – код возврата.

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

Resume

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [out] rc – код возврата.

Нет.

Terminate

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [in] zombie – фиктивный параметр.
  • [in] code – код завершения потока исполнения.
  • [out] rc – код возврата.

Нет.

Exit

Назначение

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

Параметры

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

Нет.

Wait

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [in] msec – время ожидания завершения потока исполнения в миллисекундах.
  • [out] code – код завершения потока исполнения.
  • [out] rc – код возврата.

Нет.

SetPriority

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [in] priority – значение, задающее приоритет потока исполнения.
  • [out] rc – код возврата.

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

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

GetTcb

Назначение

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

Параметры

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

Нет.

SetTls

Назначение

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

Параметры

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

Нет.

Sleep

Назначение

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

Параметры

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

Нет.

GetInfo

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [out] info – структура со сведениями о потоке исполнения.
  • [out] rc – код возврата.

Нет.

DetachIrq

Назначение

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

Параметры

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

Нет.

GetAffinity

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [out] mask – маска сходства потока исполнения.
  • [out] rc – код возврата.

Нет.

SetAffinity

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [in] mask – маска сходства потока исполнения.
  • [out] rc – код возврата.

Нет.

SetSchedPolicy

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [in] policy – значение, задающее класс планирования потока исполнения.
  • [in] priority – значение, задающее приоритет потока исполнения.
  • [in] param – объединение, содержащее параметры класса планирования потока исполнения.
  • [out] rc – код возврата.

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

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

GetSchedPolicy

Назначение

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [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-дескриптором IPC-канала, ассоциированного с пользовательским ресурсом.
  • [out] riid – идентификатор службы (RIID), ассоциированной с пользовательским ресурсом.
  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле созданного дескриптора и поле маски прав созданного дескриптора. Дескриптор идентифицирует пользовательский ресурс.
  • [out] rc – код возврата.

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

Close

Назначение

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

Параметры

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

Нет.

Connect

Назначение

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

Параметры

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

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

Disconnect

Назначение

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

Параметры

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

Нет.

SecurityConnect

Назначение

Создает дескриптор и связывает его с интерфейсом безопасности.

Параметры

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

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

SecurityDisconnect

Назначение

Разрывает связь дескриптора с интерфейсом безопасности.

Параметры

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

Нет.

UidAlloc

Назначение

Выделяет значение уникального идентификатора.

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

Параметры

  • [out] uid – значение уникального идентификатора.
  • [out] rc – код возврата.

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

UidFree

Назначение

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

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

Параметры

  • [in] uid – значение уникального идентификатора.
  • [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

Назначение

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

Параметры

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

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

SetEntry

Назначение

Задает точку входа процесса.

Параметры

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

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

LoadElfSyms

Назначение

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

Буферы MDL содержат таблицу символов и таблицу строк из незагружаемых сегментов файла ELF. Эти таблицы нужны для получения данных обратной трассировки стека (сведений о стеках вызовов).

Параметры

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

Нет.

SetEnv

Назначение

Загружает параметры процесса в его память.

Параметры

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

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

FreeSelfEnv

Назначение

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

Параметры

  • [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 – последовательность, содержащая контекст потока исполнения.
  • [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

Назначение

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

Параметры

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

Нет.

GetInitialThreadPriority

Назначение

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

Параметры

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

Нет.

SetInitialThreadPriority

Назначение

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

Параметры

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

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

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

GetTasksList

Назначение

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

Параметры

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

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

SetInitialThreadSchedPolicy

Назначение

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

Параметры

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

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

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

ReseedAslr

Назначение

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

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

Параметры

  • [in] task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс.
  • [in] seed – последовательность, содержащая начальный вектор для генерации случайных чисел.
  • [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 – код возврата.

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

В начало
[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 – код возврата.

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

В начало
[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)

Метод

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

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

CreateUser

Назначение

Назначает профилирование пользовательского кода.

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

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [in] from – начальный адрес диапазона виртуальных адресов, для которого собирается статистика.
  • [in] to – конечный адрес диапазон виртуальных адресов, для которого собирается статистика.
  • [in] scale – значение, определяющее гранулярность разбиения пользовательского кода внутри диапазона виртуальных адресов, заданного через параметры from и to. От этого значения зависит, на сколько участков будет разбит диапазон адресов.
  • [out] rc – код возврата.

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

DestroyUser

Назначение

Отменяет профилирование пользовательского кода.

Параметры

  • [in] tid – идентификатор потока исполнения (TID).
  • [out] rc – код возврата.

Нет.

CreateKernel

Назначение

Назначает профилирование кода ядра.

Результатом профилирования является статистика исполнения кода ядра. Статистика показывает, сколько раз за время профилирования сработал код ядра из разных участков диапазона адресов памяти процесса, вызвавшего этот метод. Диапазон виртуальных адресов, занятых кодом ядра, идентичен для всех процессов. Статистика исполнения кода ядра собирается в общем, а не в контексте одного процесса или потока исполнения.

Параметры

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

Нет.

DestroyKernel

Назначение

Отменяет профилирование кода ядра.

Параметры

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

Нет.

StartKernel

Назначение

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

Параметры

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

Нет.

StopKernel

Назначение

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

Параметры

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

Нет.

GetKernelData

Назначение

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

Параметры

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

Нет.

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 – код возврата.

Нет.

В начало
[Topic kernel_methods_profiler]

Служба управления памятью для ввода-вывода

Служба предназначена для управления изоляцией регионов физической памяти, используемых устройствами на шине PCIe. (Изоляция обеспечивается 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 – идентификатор службы.
  • [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 – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор является слушающим IPC-дескриптором.
  • [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] evId – идентификатор записи вида "ресурс – маска событий", соответствующей ресурсу, для которого извлечены уведомления.
  • [out] evMask – маска событий, произошедших с ресурсом.
  • [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 не может быть передан другому процессу, так как в маске прав этого дескриптора не установлен необходимый для этого флаг.

Параметры

  • [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]