Man page - cacheflush(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

cacheflush

NAZWA
BIBLIOTEKA
SKŁADNIA
OPIS
WARTOŚĆ ZWRACANA
BŁĘDY
WERSJE
Warianty na różnych architekturach
Alternatywa GCC
STANDARDY
USTERKI
TŁUMACZENIE

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 .