cacheflush - выталкивает содержимое кэша инструкций и/или данных
cacheflush(2)
выталкивает содержимое кэша инструкций и/или данных
ОБЗОР
#include <asm/cachectl.h>
int cacheflush(char *addr, int nbytes, int cache);
ОПИСАНИЕ
cacheflush() выталкивает содержимое указанного кэша(ей) обратно в
пользовательское адресное пространство в диапазоне с
addr по
(addr+nbytes-1). Параметр
cache может принимать одно из значений:
ICACHE
Выталкивает кэш инструкций.
DCACHE
Записать обратно в память и объявить недействительными задетые достоверные
строки кэша.
BCACHE
Тоже что и (ICACHE|DCACHE).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном завершении
cacheflush() возвращает 0 или -1 при ошибке. Если
обнаружены ошибки, то
errno будет содержать номер ошибки.
ОШИБКИ
EFAULT
Некоторая часть или весь диапазон адресов с addr по (addr+nbytes-1)
недоступен.
EINVAL
Значение cache не равно ICACHE, DCACHE или BCACHE (но смотрите
ДЕФЕКТЫ).
СООТВЕТСТВИЕ СТАНДАРТАМ
В прошлом, данный системный вызов был доступен во всех вариантах UNIX на
MIPS включая RISC/os, IRIX, Ultrix, NetBSD, OpenBSD и FreeBSD (и также в
некоторых ОС не-UNIX MIPS), поэтому существование этого вызова в ОС на MIPS
является стандартом де-факто.
Предостережение
Вызов
cacheflush() не должен использоваться в переносимых программах. В
Linux, этот вызов сперва появился на архитектуре MIPS, но в настоящее время
Linux предоставляет системный вызов
cacheflush() и на других
архитектурах, но с другими аргументами.
ДЕФЕКТЫ
Ядра Linux до версии 2.6.11 игнорируют аргументы
addr и
nbytes, что
делает этот вызов относительно дорогим — всегда очищается весь кэш.
Данный вызов всегда поступает так, как если бы в аргументе cache
передавалось значение BCACHE, и не выполняет проверки значения cache.