Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

       cacheflush - Befehls- und/oder Datencache(s) zurückschreiben und freigeben

ÜBERSICHT

       #include <sys/cachectl.h>

       int cacheflush(void *Adr, 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).

KONFORM ZU

       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.

   Vorsicht
       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.

ANMERKUNGEN

   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.

FEHLER

       Linux-Kernel älter als Version 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.

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  5.13  des  Projekts  Linux-man-pages. Eine
       Beschreibung des Projekts, Informationen, wie Fehler  gemeldet  werden  können  sowie  die
       aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

Ü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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.