遵循规范

从历史上看,此系统调用可用于所有MIPS UNIX变体,包括RISC / os,IRIX,Ultrix,NetBSD,OpenBSD和FreeBSD(以及某些非UNIX MIPS操作系统),因此该调用在MIPS操作系统中存在系统是事实上的标准。

Caveat

cacheflush()不应在旨在可移植的程序中使用。在Linux上,此调用首次出现在MIPS架构上,但如今,Linux在其他一些架构上提供了cacheflush()系统调用,但具有不同的参数。

说明

cacheflush()将范围为addr的用户地址的指示缓存的内容刷新为(addr + nbytes-1)。缓存可能是以下之一:

ICACHE
刷新指令缓存。
DCACHE
写回内存并使受影响的有效缓存行无效。
BCACHE
与(ICACHE | DCACHE)相同。
CACHEFLUSH - Linux手册页

Linux程序员手册 第2部分
更新日期: 2017-09-15

名称

cacheflush-刷新指令和/或数据缓存的内容

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

错误说明

EFAULT
无法访问(addr + nbytes-1)的部分或全部地址范围。
EINVAL
缓存不是ICACHE,DCACHE或BCACHE之一(但请参阅BUGS)。

返回值

cacheflush()成功返回0,错误返回-1。如果检测到错误,则errno将指示错误。

语法

#include <asm/cachectl.h>

int cacheflush(char *addr, int nbytes, int cache);

BUGS

早于2.6.11版的Linux内核会忽略addr和nbytes参数,从而使此函数相当昂贵。因此,整个缓存始终被刷新。

此函数的行为始终就像为cache参数传递了BCACHE一样,并且不对cache参数进行任何错误检查。

日期:2019-08-20 17:58:35 来源:oir作者:oir