Методы служб ядра KasperskyOS
С точки зрения модуля безопасности Kaspersky Security Module ядро KasperskyOS является контейнером компонентов, предоставляющих службы. Список компонентов ядра содержится в файле Core.edl
, расположенном в директории sysroot-*-kos/include/kl/core
из состава KasperskyOS SDK. Также в этой директории находятся CDL-, IDL-файлы формальной спецификации ядра.
Методы служб ядра можно разделить на безопасные и потенциально опасные. Потенциально опасные методы могут быть использованы злоумышленником в компрометированном компоненте решения, чтобы, например, вызвать отказ, организовать скрытую передачу данных, захватить управление устройством ввода-вывода. Безопасные методы не могут быть использованы таким образом.
Доступ к методам служб ядра должен быть максимально ограничен политикой безопасности решения (принцип least privilege). Для этого нужно выполнить следующие требования:
- Разрешить доступ к безопасному методу только тем компонентам решения, которым этот метод нужен.
- Разрешить доступ к потенциально опасному методу только тем доверенным компонентам решения, которым этот метод нужен.
- Разрешить доступ к потенциально опасному методу только тем недоверенным компонентам решения, которым этот метод нужен, если только проверяемые условия доступа ограничивают возможности злонамеренного использования метода, или последствия злонамеренного использования метода допустимы с точки зрения безопасности.
Например, недоверенному компоненту можно разрешить использовать ограниченный набор портов ввода-вывода, чтобы этот компонент не мог захватить управление устройствами ввода-вывода. Также, к примеру, скрытая передача данных между недоверенными компонентами может быть допустимой с точки зрения безопасности.
В начало
[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
|
Назначение
Отвязывает текущий поток исполнения от прерывания, обрабатываемого в его контексте.
Параметры
|
Нет.
|
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 .
Параметры
|
Нет.
|
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.
Параметры
|
Позволяет настроить контроллер XHCI, чтобы диагностический вывод выполнялся через порт USB (версии 3.0 или более поздней).
|
Stop
|
Назначение
Выключает отладочный режим контроллера XHCI.
Параметры
|
Позволяет настроить контроллер 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
|
Назначение
Отменяет профилирование кода ядра.
Параметры
|
Нет.
|
StartKernel
|
Назначение
Запускает профилирование кода ядра.
Параметры
|
Нет.
|
StopKernel
|
Назначение
Останавливает профилирование кода ядра.
Параметры
|
Нет.
|
GetKernelData
|
Назначение
Позволяет получить данные, содержащие статистику исполнения кода ядра, полученную в результате профилирования.
Параметры
- [in]
buf – указатель на буфер для сохранения данных, содержащих статистику исполнения кода ядра. - [out]
rc – код возврата.
|
Нет.
|
GetCoverageData
|
Назначение
Позволяет получить сведения о покрытии кода ядра.
Параметры
- [in]
index – индекс для перечисления объектных файлов, содержащих инструментированный код для сбора покрытия. Нумерация начинается с нуля. - [out]
buf – последовательность, содержащая сведения о покрытии кода объектного файла (в формате gcda ). - [out]
size – размер данных, содержащих сведения о покрытии кода объектного файла, в байтах. - [out]
name – путь к файлу *.gcda , назначенный при компиляции. - [out]
rc – код возврата.
|
Нет.
|
FlushGcov
|
Назначение
Выводит сведения о покрытии кода ядра в формате gcda через UART.
Параметры
|
Нет.
|
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]