CACHEFLUSH
Section: Linux Programmer's Manual (2)
Updated: 2017-09-15
Index
Return to Main Contents
名前
cacheflush - 命令キャッシュやデータキャッシュの内容をフラッシュする
書式
#include <asm/cachectl.h>
int cacheflush(char *addr, int nbytes, int cache);
説明
cacheflush() は addr から (addr+nbytes-1) の範囲のユーザーアドレスに対応する
指定されたキャッシュをフラッシュする。 cache には以下のいずれかを指定する:
- ICACHE
-
命令 (instruction) キャッシュをフラッシュする。
- DCACHE
-
変更があったキャッシュラインをメモリーに書き戻し、無効にする。
- BCACHE
-
(ICACHE|DCACHE) と同じ。
返り値
cacheflush() は成功した場合は 0 を、失敗した場合は -1 を返す。エラーが検出された場合は errno
にエラーが指示される。
エラー
- EFAULT
-
addr から (addr+nbytes-1) の範囲のアドレスの全てまたは一部が アクセス可能ではない。
- EINVAL
-
cache パラメーターが ICACHE, DCACHE, BCACHE のどれでもない
(「バグ」を参照すること)。
準拠
歴史的には、このシステムコールは
RISC/os, IRIX, Ultrix, NetBSD, OpenBSD, FreeBSD を含む
すべての MIPS UNIX 派生物
(と UNIX ではない、いくつかの MIPS オペレーティングシステム) で利用可能であった。
そのため、このシステムコールが存在することは、MIPS オペレーティングシステムでは、
デファクトスタンダードであった。
注意
cacheflush()
は移植を意図したプログラムで使用すべきではない。
Linux では、このシステムコールは、MIPS アーキテクチャーで最初に登場した。
しかし、今日では、Linux は
cacheflush()
システムコールを他のアーキテクチャーでも提供している。
ただし、引き数が異なる。
バグ
バージョン 2.6.11 より古い Linux カーネルでは、
引き数 addr と nbytes は無視されるため、
この関数はとても処理コストが高い。
そのため、常に全てのキャッシュがフラッシュされる。
この関数は
BCACHE
が
cache
引き数に渡されたかのように動作し、
cache
引き数のエラーチェックを行わない。
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.07 の一部である。
プロジェクトの説明、バグ報告に関する情報、このページの最新版は、
http://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- バグ
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 11:53:34 GMT, January 05, 2021