cacheflush − Befehls- und Datencaches entleeren
#include <asm/cachectl.h>
int cacheflush(char *addr, int nbytes, int cache);
Cacheflush schreibt den als Argument angegebenen Benutzeradressbereich addr bis (addr+nbytes-1) aus den Caches in den Speicher zurück und invalidiert die betroffenen Cachelines anschließend. Cache ist eine der folgenden Konstanten:
ICACHE |
Befehlscache invalidieren. |
||
DCACHE |
Den Datencache zurück in den Speicher schreiben und die betroffenen Cachelines invalidieren. |
||
BCACHE |
Identisch mit (ICACHE|DCACHE). |
cacheflush gibt 0 bei Erfolg oder -1 im Fehlerfall zurück. Sollten Fehler erkannt werden, enthält errno die Fehlernummer.
EINVAL |
Der cache Parameter ist nicht ICACHE, DCACHE, oder BCACHE. |
||
EFAULT |
Der Adressbereich addr bis (addr+nbytes-1) ist ganz oder teilweise nicht adressierbar. |
Die aktuelle Implementation ignoriert die addr und nbytes Parameter. Stattdessen wird immer der gesamte Cache geflusht.
Dieser Systemaufruf ist nur auf MIPS-basierten Systemen verfügbar.