bdflush -
バッファーダーティーフラッシュデーモンを起動、フラッシュ、調整する
#include <sys/kdaemon.h>
int bdflush(int func, long *address);
int bdflush(int func, long data);
注意: Linux 2.6
以降では、このシステムコールは非推奨であり、何も行わない。
将来のカーネルのリリースで完全になくなる可能性が高い。現在は、
bdflush() が
実行していた処理はカーネルの
pdflush
スレッドによって行われている。
bdflush()
はバッファーダーティーフラッシュ
(buffer-dirty-flush) デーモン (daemon)
を起動、フラッシュ
(flush)、調整 (tune) する。 (
CAP_SYS_ADMIN ケーパビリティ
(capability) を持つ)
特権プロセスのみが
bdflush()
を呼び出すことができる。
func が負か 0
でデーモンが起動されていなれば、
bdflush()
はデーモンのコードへ入り、戻ってこない。
func が 1 ならば、 汚れた
(dirty)
バッファーがディスクへと書き込まれる。
func が 2 以上で偶数
(最小ビットが 0)
ならば、
address
にロングワードでアドレスを指定し、そのアドレスに
(
func-2)/2
で指定された調節パラメーターが返される。
func が 3 以上で奇数
(最小ビットが 1)
ならば、
data
をロングワードで指定し、その値を
(
func-3)/2
で指定された調節パラメーターに設定する。
パラメーターの集合やその値、有効な範囲は
Linux カーネルソースの
fs/buffer.c
に定義されている。
func が負か 0
で、デモーンの起動に成功した場合は
bdflush()
は返ってこない。
そうでなければ成功した場合には
0
が返される。失敗した場合には
-1 が返され、
errno
にそのエラーが指示される。
- EBUSY
- 他のプロセスが既にデーモンコードに入っているのに、入ろうと試みた。
- EFAULT
-
address
がアクセス可能なアドレス空間の外部を指している。
- EINVAL
- 不正なパラメーターの読み書きを試みたか、パラメーターへ不正な値を
書き込もうとした。
- EPERM
- 呼び出し元に
CAP_SYS_ADMIN
ケーパビリティがない。
バージョン 2.23 以降の glibc
では、この廃止予定のシステムコールはサポートされていない。
bdflush() は Linux
特有であり移植を意図したプログラムで使用すべきではない。
sync(1),
fsync(2),
sync(2)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。