Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       cacheflush - выталкивает содержимое кэша инструкций и/или данных

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <sys/cachectl.h>

       int cacheflush(void addr[.nbytes], int nbytes, int cache);

       Примечание: На некоторых архитектурах нет оболочки glibc для этой системы call; см. ПРИМЕЧАНИЯ.

ОПИСАНИЕ

       cacheflush()  выталкивает содержимое указанного кэша(ей) обратно в пользовательское адресное пространство
       в диапазоне с addr по (addr+nbytes-1). Параметр cache может принимать одно из значений:

       ICACHE Выталкивает кэш инструкций.

       DCACHE Записать обратно в память и объявить недействительными задетые достоверные строки кэша.

       BCACHE Тоже что и (ICACHE|DCACHE).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       cacheflush()  returns 0 on success.  On error, it returns -1 and sets errno to indicate the error.

ОШИБКИ

       EFAULT Некоторая часть или весь диапазон адресов с addr по (addr+nbytes-1) недоступен.

       EINVAL Значение cache не равно ICACHE, DCACHE или BCACHE (но смотрите ДЕФЕКТЫ).

ВЕРСИИ

       Вызов cacheflush() не должен использоваться в переносимых программах. В Linux, этот вызов сперва появился
       на архитектуре MIPS, но в настоящее время Linux предоставляет системный вызов cacheflush()  и  на  других
       архитектурах, но с другими аргументами.

   Варианты, зависящие от архитектуры
       glibc  provides  a  wrapper for this system call, with the prototype shown in SYNOPSIS, for the following
       architectures: ARC, CSKY, MIPS, and NIOS2.

       В некоторых других архитектурах Linux предоставляет этот системный вызов с другими аргументами:

       M68K:
              int cacheflush(unsigned long addr, int scope, int cache,
                             unsigned long len);

       SH:
              int cacheflush(unsigned long addr, unsigned long len, int op);

       NDS32:
              int cacheflush(unsigned int start, unsigned int end, int cache);

       On the above architectures, glibc does not provide  a  wrapper  for  this  system  call;  call  it  using
       syscall(2).

   альтернатива GCC
       Unless  you  need  the finer grained control that this system call provides, you probably want to use the
       GCC built-in function __builtin___clear_cache(), which provides a  portable  interface  across  platforms
       supported by GCC and compatible compilers:

           void __builtin___clear_cache(void *begin, void *end);

       На платформах, не требующих очистки кэша инструкций, __builtin___clear_cache() не имеет никакого эффекта.

       Примечание:  В  некоторых GCC-совместимых компиляторах прототип этой встроенной функции использует char *
       вместо void * для параметров.

СТАНДАРТЫ

       В прошлом, данный системный вызов был доступен во всех вариантах UNIX  на  MIPS  включая  RISC/os,  IRIX,
       Ultrix,  NetBSD,  OpenBSD  и  FreeBSD  (и также в некоторых ОС не-UNIX MIPS), поэтому существование этого
       вызова в ОС на MIPS является стандартом де-факто.

ОШИБКИ

       Linux kernels older than Linux 2.6.11 ignore the addr and nbytes arguments, making this  function  fairly
       expensive.  Therefore, the whole cache is always flushed.

       Данный  вызов  всегда  поступает  так,  как  если бы в аргументе cache передавалось значение BCACHE, и не
       выполняет проверку ошибочности значения cache.

ПЕРЕВОД

       Русский перевод этой страницы  руководства  разработал(и)  Azamat  Hackimov  <azamat.hackimov@gmail.com>,
       Dmitriy   S.   Seregin  <dseregin@59.ru>,  Dmitry  Bolkhovskikh  <d20052005@yandex.ru>,  Katrin  Kutepova
       <blackkatelv@gmail.com>, Yuri Kozlov  <yuray@komyakino.ru>,  Иван  Павлов  <pavia00@gmail.com>  и  Kirill
       Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                    cacheflush(2)