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

BEZEICHNUNG
cacheflush - Befehls- und/oder Datencache(s) zurückschreiben und freigeben
BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT
#include <sys/cachectl.h>
int cacheflush(void Adr[.aByte], int nByte, int cache);
Hinweis: Auf einigen Architekturen gibt es keinen Glibc-Wrapper für diesen Systemaufruf; siehe
ANMERKUNGEN.
BESCHREIBUNG
cacheflush() schreibt den Inhalt der angegebenen Cache(s) für den Benutzeradressbereich Adr bis
(Adr+aByte-1) in den Speicher zurück. cache ist eine der folgenden Konstanten:
ICACHE den Befehlscache freigeben.
DCACHE zurück in den Speicher schreiben und die betroffenen Bereiche des Caches für ungültig erklären,
also freigeben.
BCACHE identisch mit (ICACHE|DCACHE).
RÜCKGABEWERT
cacheflush() gibt 0 bei Erfolg zurück. Im Fehlerfall wird -1 zurückgeliefert und errno gesetzt, um den
Fehler anzuzeigen.
FEHLER
EFAULT Auf den Adressbereich von Adr bis (Adr+aByte-1) kann (ganz oder teilweise) nicht zugegriffen
werden.
EINVAL Dem Parameter cache ist keiner der Werte ICACHE, DCACHE oder BCACHE zugewiesen (siehe aber auch
FEHLER).
VERSIONEN
cacheflush() sollte nicht in Programmen verwandt werden, die portabel sein sollen. Unter Linux erschien
dieser Aufruf zuerst auf der MIPS-Architektur, heutzutage stellt Linux einen Systemaufruf cacheflush()
aber auch auf einigen anderen Architekturen zur Verfügung, allerdings mit anderen Argumenten.
Architektur-spezifische Varianten
Glibc stellt einen Wrapper für die Architekturen ARC, CSKY, MIPS und NIOS2 für diesen Systemaufruf
bereit, dessen Prototyp in der ÜBERSICHT gezeigt ist.
Auf einigen anderen Architekturen stellt Linux diesen Systemaufruf mit anderen Argumenten bereit:
M68K:
int cacheflush(unsigned long Adr, int scope, int cache,
unsigned long laenge);
SH:
int cacheflush(unsigned long Adr, unsigned long laenge, int op);
NDS32:
int cacheflush(unsigned int start, unsigned int ende, int cache);
Auf den obigen Architekturen stellt Glibc keinen Wrapper für diesen Systemaufruf bereit; rufen Sie ihn
mittels syscall(2) auf.
GCC-Alternative
Sie werden wahrscheinlich die in GCC eingebaute Funktion __builtin___clear_cache() verwenden wollen, die
eine portierbare Schnittstelle über die von GCC und kompatiblen Compilern unterstützten Plattformen
bereitstellt, außer Sie benötigen die feinere Steuerung, die dieser Systemaufruf bereitstellt.
void __builtin___clear_cache(void *anfang, void *ende);
Auf Plattformen, bei denen der Instruktionszwischenspeicher nicht rausgeschrieben werden muss, hat
__builtin___clear_cache() keine Auswirkung.
Hinweis: Auf einigen GCC-kompatiblen Compilern verwendet der Prototyp für diese eingebaute Funktion char
* anstatt void * für die Parameter.
STANDARDS
Historisch war dieser Systemaufruf auf allen MIPS-UNIX-Varianten, inklusive RISC/os, IRIX, Ultrix,
NetBSD, OpenBSD und FreeBSD (und auf einigen nicht-UNIX-MIPS-Betriebssystemen) verfügbar, so dass die
Existenz dieses Aufrufs in MIPS-Betriebssystemen der de-facto-Standard ist.
FEHLER
Linux-Kernel älter als Linux 2.6.11 ignorieren die Argumente Adr und aByte. Dadurch wird die Funktion
relativ aufwändig. Daher wird immer der ganze Cache freigegeben.
Die Funktion verhält sich immer so, als ob BCACHE als Argument für cache übergeben worden wäre und führt
keine Fehlerprüfung auf dem Argument cache durch.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Ralf Baechle <ralf@waldorf-gmbh.de>, Martin
Eberhard Schauer <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
Mailingliste der Übersetzer.
Linux man-pages 6.9.1 2. Mai 2024 cacheflush(2)