struct cache_ctrl

Дескриптор библиотеки libcache

Прототип:

#include <sys/cache.h>
struct cache_ctrl {
_Uint32t cache_line_size;
_Uint32t cache_flush_rate;
_Uint32t cache_invalidate_rate;
_Uint32t flags; /* Internal to library */
int fd;
struct cache_funcs cf; /* Internal to library */
void *dll; /* Internal to library */
struct cacheattr_entry **cachelist; /* Internal to library */
int ncaches; /* Internal to library */
struct syspage_entry *syspage; /* Internal to library */
unsigned bitmask; /* Internal to library */
};

Описание:

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

cache_line_size
После выполнения функции данное поле будет содержать размер строки кэша в байтах. Если в системе реализован протокол отслеживания шины, это поле может содержать ноль.
cache_flush_rate
Предоставляет драйверу индикацию о стоимости очистки кеша:
CACHE_OP_RATE_SNOOP
Из-за механизма отслеживания шины операция очистки кеша имеет незначительную стоимость.
CACHE_OP_RATE_INLINE
Операции очистки кэша реализуются с помощью встроенных подпрограмм, зависящих от ЦП, и стоят недорого.
CACHE_OP_RATE_CALLOUT
Операции очистки кеша реализуются путем вызова внешней функции, что вызывает небольшие накладные расходы ЦП.
CACHE_OP_RATE_MSYNC
Операции очистки кеша реализуются путем вызова msync(). Поскольку эта функция реализована с помощью системного вызова, операция будет очень дорогостоящей. Очень маловероятно, что библиотека в конечном итоге вызовет msync(), но в этом случае драйвер потенциально может достичь лучшей производительности, отображая буферы данных как некэшируемые, чтобы избежать необходимости выполнять операции синхронизации кеша.
cache_invalidate_rate
Предоставляет драйверу индикацию стоимости выполнения процедуры аннулирования кеша. Значения, определенные для этого поля, аналогичны тем, которые определены для поля cache_flush_rate.
fd
Драйверу следует установить данное поле в значение NOFD.

На другие поля в структуре не следует ссылаться или изменять их.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

cache_fini(), CACHE_FLUSH(), cache_init(), CACHE_INVAL()




Предыдущий раздел: Описание API библиотеки cache