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

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 aByte, 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: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                     cacheflush(2)