Фрагмент системной страницы, характеризующий сведения о конфигурации внутрисхемной и внесхемной кеш-памяти процессора
#include <sys/syspage.h>
struct cacheattr_entry {
uint32_t next;
uint32_t line_size;
uint32_t num_lines;
uint32_t flags;
unsigned (*control)( uint32_t,
unsigned,
int,
struct cacheattr_entry *,
volatile struct syspage_entry * );
uint16_t ways;
uint16_t spare0[1];
uint32_t spare1[2];
};
Структура содержит информацию системной страницы, характеризующую сведения о конфигурации внутрисхемной и внесхемной кеш-памяти процессора. Суммарное количество байт, описываемых записью cacheattr, равно line_size × num_lines. Структура включает следующие поля:
- next
- Индекс следующей записи, которая находится на уровень ниже.
- line_size
- Размер строки кеш-памяти в байтах.
- num_lines
- Количество строк кеш-памяти.
- flags
- Параметр представляет собой битовую карту, которая состоит из следующих флагов:
- CACHE_FLAG_INSTR
- Соответствует кешу инструкций.
- CACHE_FLAG_DATA
- Соответствует кешу данных.
- CACHE_FLAG_UNIFIED
- Соответствует общему кешу инструкций и данных.
- CACHE_FLAG_SHARED
- Кеш является общим для нескольких процессоров SMP-системы.
- CACHE_FLAG_SNOOPED
- Реализует протокол слежения за шиной (bus-snooping).
- CACHE_FLAG_VIRT_TAG
- CACHE_FLAG_VIRTUAL
- Применяется виртуальное тегирование.
- CACHE_FLAG_WRITEBACK
- Выполняет write-back, а не write-through запись.
- CACHE_FLAG_CTRL_PHYS
- Принимает физические адреса с помощью callout-функции control().
- CACHE_FLAG_SUBSET
- Соответствует свойству subset. Это означает, что на одном уровне кеш-памяти также кешируется содержимое другого уровня. Если содержимое находится на некотором уровне кеш-памяти, оно также присутствует на всех нижележащих уровнях. Этот флаг влияет на операции сброса кеш-памяти, поскольку callout-функция control() может игнорировать уровни, которые находятся выше уровня с требуемыми данными.
- CACHE_FLAG_NONCOHERENT
- Кеш не когерентен в SMP-системе.
- CACHE_FLAG_NONISA
- Не следует инструкциям кеша ISA.
- CACHE_FLAG_VIRT_IDX
- Кеш имеет виртуальное индексирование.
- CACHE_FLAG_CTRL_PHYS64
- Callout-функция control() принимает 64-битные физические адреса.
- control
- Данный callout ядра используется для управления кеш-памятью процессора.
- ways
- Устаревшее поле.
ЗОСРВ «Нейтрино»
struct syspage_entry
Руководство по разработке модуля startup
Предыдущий раздел: Описание API системной библиотеки