API определены в заголовочных файлах sysroot-*-kos/include/coresrv/hal/hal_*.h из состава KasperskyOS SDK. Заголовочный файл hal_api.h содержит директивы включения остальных заголовочных файлов hal_*.h.
Основные возможности API:
Сведения о функциях API приведены в таблицах ниже.
Очистка кеша процессора
Чтобы очистить кеш процессора, нужно вызвать функцию KnHalFlushCache(), объявленную в заголовочном файле hal_api.h. Функция очищает кеш процессора всех доступных уровней. При этом можно очистить кеш данных и кеш инструкций, соответствующие заданному региону виртуальной памяти. К примеру, драйверу требуется очищать кеш данных процессора, который соответствует памяти, используемой для DMA, поскольку в результате кеширования содержимое этой памяти с позиции драйвера может отличаться от действительного содержимого, видимого устройству.
Также для очистки кеша процессора можно использовать функцию KosCpuCacheFlush() из API cpucache.h. В отличие от функции KnHalFlushCache(), которая всегда выполняет системный вызов для очистки кеша процессора, функция KosCpuCacheFlush() делает так только в том случае, если нет возможности выполнить очистку без этого системного вызова.
Аппаратная генерация случайных чисел
Чтобы получить случайные числа, сгенерированные аппаратно, нужно вызвать функцию KnHalGetEntropy(), объявленную в заголовочном файле hal_api.h.
Перезагрузка аппаратной платформы
Чтобы перезагрузить аппаратную платформу, нужно вызвать функцию KnHalResetSystem(), объявленную в заголовочном файле hal_common.h.
Диагностический вывод программ
Чтобы поместить данные в диагностический вывод, нужно вызвать функцию KnHalDebugWrite(), объявленную в заголовочном файле hal_common.h. Эти данные будут выведены, например, через порт COM или USB (версии 3.0 или более поздней, с поддержкой DbC) в зависимости от конфигурации ядра.
Получение значений параметров аппаратной платформы
Чтобы получить значение параметра аппаратной платформы, нужно вызвать функцию KnHalGetEnv() или KnHalGetEnvMemRegion(), объявленные в заголовочном файле hal_env.h. Значения параметров аппаратной платформы содержат такие данные, как сведения о плате, архитектуре и частоте процессора, SMBIOS (System Management BIOS), FDT (Flattened Device Tree). Символьные константы с именами параметров определены в заголовочном файле sysroot-*-kos/include/hal/env_names.h из состава KasperskyOS SDK. Функцию KnHalGetEnvMemRegion() можно использовать только для получения сведений о SMBIOS и FDT (значения параметров с именами HAL_ENV_SMBIOS и HAL_ENV_GET_FDT_INFO соответственно).
Получение числа процессоров (вычислительных ядер) на аппаратной платформе
Чтобы получить число процессоров на аппаратной платформе, нужно вызвать функцию KnHalGetCpuCount(), объявленную в заголовочном файле hal_env.h.
Получение и установка значений привилегированных регистров периферийных устройств
Чтобы получить или задать значение привилегированного регистра периферийного устройства, нужно использовать функции, объявленные в заголовочном файле hal_privregs.h.
Чтобы получить значение регистра, нужно вызвать функцию KnHalGetPrivReg() или KnHalGetPrivRegRange().
Чтобы задать значение регистра, нужно вызвать функцию KnHalSetPrivReg() или KnHalSetPrivRegRange().
Сведения о функциях API
Функции hal_api.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Очищает кеш процессора. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Позволяет получить случайные числа, сгенерированные аппаратно. Параметры
Возвращаемые значения В случае успеха возвращает |
Функции hal_common.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Перезагружает аппаратную платформу. Параметры Нет. Возвращаемые значения Если функция не реализована, возвращает |
|
Назначение Помещает данные в диагностический вывод, который записывается, например, в порт COM или USB (версии 3.0 или более поздней, с поддержкой DbC). Параметры
Возвращаемые значения В случае успеха возвращает |
Функции hal_env.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Позволяет получить значение параметра аппаратной платформы. Параметры
Возвращаемые значения В случае успеха возвращает Если размер буфера, заданного через параметр |
|
Назначение Позволяет считать значение параметра аппаратной платформы вида Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Позволяет получить число процессоров (вычислительных ядер) на аппаратной платформе. Параметры
Возвращаемые значения В случае успеха возвращает |
Функции hal_privregs.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Позволяет получить значение привилегированного регистра периферийного устройства. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Задает значение привилегированного регистра периферийного устройства. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Позволяет получить значение привилегированного регистра периферийного устройства. Параметры
Возвращаемые значения В случае успеха возвращает Если строка, заданная через параметр Если произошла ошибка IPC, возвращает Если имя диапазона регистров некорректно, или смещение регистра вне допустимого диапазона, возвращает Если поток исполнения, в котором вызвана функция, привязан к прерыванию, возвращает |
|
Назначение Задает значение привилегированного регистра периферийного устройства. Параметры
Возвращаемые значения В случае успеха возвращает Если строка, заданная через параметр Если произошла ошибка IPC, возвращает Если имя диапазона регистров некорректно, или смещение регистра вне допустимого диапазона, возвращает Если поток исполнения, в котором вызвана функция, привязан к прерыванию, возвращает |