Provided by: manpages-pl-dev_4.26.0-1_all 

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
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: 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)