API определен в заголовочном файле sysroot-*-kos/include/kos/cpucache.h из состава KasperskyOS SDK.
API позволяет очищать кеш процессора, а также получать сведения о кеше процессора.
Сведения о функциях API приведены в таблице ниже.
Очистка кеша процессора
Чтобы очистить кеш процессора, нужно вызвать функцию KosCpuCacheFlush(). Функция очищает кеш процессора всех доступных уровней. При этом можно очистить кеш данных и кеш инструкций, соответствующие заданному региону виртуальной памяти. К примеру, драйверу требуется очищать кеш данных процессора, который соответствует памяти, используемой для DMA, поскольку в результате кеширования содержимое этой памяти с позиции драйвера может отличаться от действительного содержимого, видимого устройству.
Также для очистки кеша процессора можно использовать функцию KnHalFlushCache() из API hal_api.h. При этом следует учитывать, что функция KnHalFlushCache() всегда выполняет системный вызов для очистки кеша процессора, а функция KosCpuCacheFlush() делает так только в том случае, если нет возможности выполнить очистку без этого системного вызова.
Получение сведений о кеше процессора
Чтобы получить сведения о кеше процессора, нужно вызвать функцию KosCpuCacheGetInfo(). Эти сведения содержат максимальные и минимальные размеры линий кеша (в байтах) и информацию об ограничениях реализации кеша на используемой процессорной архитектуре. Потребность в этих сведениях возникает при реализации низкоуровневых механизмов управления кешем процессора, например, в драйверах. При реализации таких механизмов, к примеру, может потребоваться определить границы линий кеша или узнать, возможно ли управлять кешем в пользовательском режиме.
Наличие максимального и минимального размера линий кеша обусловлено тем, что вычислительная платформа может включать в своем составе вычислительные ядра с разным размером линий кеша, а также внешний контроллер кеша процессора.
Ограничения реализации кеша делятся на общие для всех процессорных архитектур и специфичные для разных процессорных архитектур. Флаги, отражающие общие ограничения, определены в заголовочном файле sysroot-*-kos/include/rtl/cpucache.h из состава KasperskyOS SDK. Флаги, отражающие специфичные ограничения, определены в заголовочных файлах sysroot-*-kos/include/rtl/<процессорная архитектура>/cpucache.h из состава KasperskyOS SDK (например, sysroot-*-kos/include/rtl/arm64/cpucache.h).
Сведения о функциях API
Функции cpucache.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Очищает кеш процессора. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Позволяет получить сведения о кеше процессора. Параметры
Возвращаемые значения В случае успеха возвращает |