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

NAZWA

       cacheflush - wypróżnia zawartość bufora podręcznego z instrukcjami i/lub z danymi

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <sys/cachectl.h>

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

       Uwaga:  Na  niektórych  architekturach nie istnieje opakowanie glibc dla tego wywołania systemowego, zob.
       UWAGI.

OPIS

       cacheflush() wypróżnia zawartość wskazanego(-ych) bufora(-ów) podręcznego(-ych) dla  adresów  przestrzeni
       użytkownika w zakresie od addr to (addr+nbytes-1). Parametr cache może być jednym z:

       ICACHE Wypróżnia bufor z instrukcjami.

       DCACHE Zapisuje z powrotem do pamięci i unieważnia dotknięte tym prawidłowe linie buforowe.

       BCACHE Identyczne z (ICACHE|DCACHE).

WARTOŚĆ ZWRACANA

       cacheflush()  zwraca  0  po  pomyślnym zakończeniu. W przypadku błędu zwraca -1 i ustawia errno wskazując
       jego rodzaj.

BŁĘDY

       EFAULT Część lub cała przestrzeń od addr do (addr+nbytes-1) jest niedostępna.

       EINVAL
               cache nie jest jednym z ICACHE, DCACHE lub BCACHE (lecz zob. USTERKI).

WERSJE

       cacheflush() nie powinien być używany przez przenośne programy. W Linuksie,  wywołanie  to  pojawiło  się
       początkowo  na  architekturze  MIPS,  lecz  obecnie  Linux udostępnia wywołanie systemowe cacheflush() na
       niektórych z innych architektur, lecz z odmiennymi argumentami.

   Warianty na różnych architekturach
       glibc udostępnia opakowanie dla tego  wywołania  systemowego,  z  prototypem  pokazanym  w  SKŁADNI,  dla
       następujących architektur: ARC, CSKY, MIPS i NIOS2.

       Na niektórych z innych architektur, Linux udostępnia to wywołanie systemowe, ale z innymi argumentami:

       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);

       Na  powyższych  architekturach  glibc nie udostępnia opakowania dla tego wywołania systemowego; należy je
       wywołać za pomocą syscall(2).

   Alternatywa GCC
       O  ile  nie  jest  konieczne  dokładniejsza  kontrola  udostępniania  przez   to   wywołanie   systemowe,
       prawdopodobnie  powinno  się korzystać z wbudowanej funkcji GCC __builtin___clear_cache(), która zapewnia
       przenośny interfejs działający na wszystkich platformach obsługiwanych  przez  GCC  i  na  kompatybilnych
       kompilatorach.

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

       Na platformach, które nie wymagają opóźniania buforów, __builtin___clear_cache() nie daje efektów.

       Uwaga:  Na  niektórych  kompilatorach  kompatybilnych  z  GCC,  prototyp tej wbudowanej funkcji używa dla
       parametrów char * zamiast void *.

STANDARDY

       Historycznie, niniejsze  wywołanie  systemowe  było  dostępne  we  wszystkich  wariantach  uniksowych  na
       platformie  MIPS,  w  tym  na  RISC/os,  IRIX,  Ultrix,  NetBSD,  OpenBSD  i  FreeBSD (oraz na niektórych
       nieuniksowych systemach operacyjnych działających na MIPS), zatem istnienie tego wywołania  w  MIPS-owych
       systemach operacyjnych jest faktycznym standardem.

USTERKI

       Jądro Linux w wersji starszej niż Linux 2.6.11 ignoruje parametry addr i nbytes, co czyni tę funkcję dość
       kosztowną. Dlatego zawsze wypróżniane są wszystkie bufory.

       Funkcja  zachowuje  się  zawsze  w  sposób,  jak gdyby argumentem cache był BCACHE i nie dokonuje żadnego
       sprawdzenia pod kątem błędów parametru cache.

TŁUMACZENIE

       Tłumaczenie niniejszej strony podręcznika: Przemek Borys  <pborys@dione.ids.pl>,  Andrzej  Krzysztofowicz
       <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                            2 maja 2024 r.                                    cacheflush(2)