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 カーネルでは、 引き数 addrnbytes は無視されるため、 この関数はとても処理コストが高い。 そのため、常に全てのキャッシュがフラッシュされる。

この関数は BCACHEcache 引き数に渡されたかのように動作し、 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