cacheflush(2) System Calls Manual cacheflush(2) BEZEICHNUNG cacheflush - Befehls- und/oder Datencache(s) zuruckschreiben und freigeben BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include int cacheflush(void Adr[.aByte], int nByte, int cache); Hinweis: Auf einigen Architekturen gibt es keinen Glibc-Wrapper fur diesen Systemaufruf; siehe ANMERKUNGEN. BESCHREIBUNG cacheflush() schreibt den Inhalt der angegebenen Cache(s) fur den Benutzeradressbereich Adr bis (Adr+aByte-1) in den Speicher zuruck. cache ist eine der folgenden Konstanten: ICACHE den Befehlscache freigeben. DCACHE zuruck in den Speicher schreiben und die betroffenen Bereiche des Caches fur ungultig erklaren, also freigeben. BCACHE identisch mit (ICACHE|DCACHE). RUCKGABEWERT cacheflush() gibt 0 bei Erfolg zuruck. Im Fehlerfall wird -1 zuruckgeliefert 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 Verfugung, allerdings mit anderen Argumenten. Architektur-spezifische Varianten Glibc stellt einen Wrapper fur die Architekturen ARC, CSKY, MIPS und NIOS2 fur diesen Systemaufruf bereit, dessen Prototyp in der UBERSICHT 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 fur 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 uber die von GCC und kompatiblen Compilern unterstutzten Plattformen bereitstellt, ausser Sie benotigen 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 fur diese eingebaute Funktion char * anstatt void * fur 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) verfugbar, so dass die Existenz dieses Aufrufs in MIPS-Betriebssystemen der de-facto-Standard ist. FEHLER Linux-Kernel alter als Linux 2.6.11 ignorieren die Argumente Adr und aByte. Dadurch wird die Funktion relativ aufwandig. Daher wird immer der ganze Cache freigegeben. Die Funktion verhalt sich immer so, als ob BCACHE als Argument fur cache ubergeben worden ware und fuhrt keine Fehlerprufung auf dem Argument cache durch. UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Ralf Baechle , Martin Eberhard Schauer und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 cacheflush(2)