CACHEFLUSH - Linux手册页
时间:2019-08-20 17:58:35 来源:igfitidea点击:
Linux程序员手册 第2部分
更新日期: 2017-09-15
名称
cacheflush-刷新指令和/或数据缓存的内容
语法
#include <asm/cachectl.h> int cacheflush(char *addr, int nbytes, int cache);
说明
cacheflush()将范围为addr的用户地址的指示缓存的内容刷新为(addr + nbytes-1)。缓存可能是以下之一:
- ICACHE
- 刷新指令缓存。
- DCACHE
- 写回内存并使受影响的有效缓存行无效。
- BCACHE
- 与(ICACHE | DCACHE)相同。
返回值
cacheflush()成功返回0,错误返回-1。如果检测到错误,则errno将指示错误。
错误说明
- EFAULT
- 无法访问(addr + nbytes-1)的部分或全部地址范围。
- EINVAL
- 缓存不是ICACHE,DCACHE或BCACHE之一(但请参阅BUGS)。
遵循规范
从历史上看,此系统调用可用于所有MIPS UNIX变体,包括RISC / os,IRIX,Ultrix,NetBSD,OpenBSD和FreeBSD(以及某些非UNIX MIPS操作系统),因此该调用在MIPS操作系统中存在系统是事实上的标准。
Caveat
cacheflush()不应在旨在可移植的程序中使用。在Linux上,此调用首次出现在MIPS架构上,但如今,Linux在其他一些架构上提供了cacheflush()系统调用,但具有不同的参数。
BUGS
早于2.6.11版的Linux内核会忽略addr和nbytes参数,从而使此函数相当昂贵。因此,整个缓存始终被刷新。
此函数的行为始终就像为cache参数传递了BCACHE一样,并且不对cache参数进行任何错误检查。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。