総合手引 | セクション 3 | オプション |
#include <sys/param.h>
#include <sys/mount.h>
vfc_name | ファイルシステムの名前。 |
vfc_index | カーネルによって割り当てられ mount(2) の呼び出しに使用された、ファイルシステムのタイプ番号。 |
vfc_refcount | このファイルシステムの参照数 (通常はマウント数ですが、 アンロードできないかカーネルに静的にリンクされている ファイルシステムでは、マウント数に 1 を加えたものになります)。 |
vfc_flags | フラグビット。 |
フラグは次のように定義されています:
VFCF_STATIC | カーネルに静的に組み込まれている |
VFCF_NETWORK | データをネットワーク経由で取得し得る |
VFCF_READONLY | 書き込みは未実装 |
VFCF_SYNTHETIC | |
データは実ファイルを表現しない | |
VFCF_LOOPBACK | マウント済みのファイルシステムに対する別名 |
VFCF_UNICODE | ファイル名を Unicode で格納 |
setvfsent() および endvfsent() 関数は、 sysctl(3) によってカーネル からまとめて取得されるファイルシステムリストの、キャッシング制御に 使用されます。 setvfsent() の cachelist パラメータが 0 でなければ、これら 検索関数のどれかを最初に呼び出した時点でリストはただ 1 回だけ取り出され、 キャッシュをクリアするために endvfsent() が呼び出されるまで保持されます。 一般に setvfsent(1) は、 getvfsent() を使用するプログラムによって呼び出される必要があり、 setvfsent() は (これもデフォルトの状態で)、 vfsload() 関数を使用するプログラムによって呼び出される必要があります。
vfsisloadable() 関数は、後で vfsload(name) の呼び出しが続きそうだと非 0 値を返します。ここで "そう" と言うのは、 vfsisloadable() は vfsload() が成功するための条件をチェックしないからです。
vfsload() 関数は、ファイルシステム name の実装カーネルモジュールをロード しようと試みます。ファイルシステムモジュールを無事に突き止めてロードした 場合は 0 が、その他の場合は非 0 が返ります。この関数を呼び出せるのは次に 示す状況だけです。
mount_cd9660(8) のソースから取った使用例を次に示します。
struct vfsconf *vfc; int error;/* ここにセットアップコードが入る */
error = getvfsbyname("cd9660", &vfc); if (error && vfsisloadable("cd9660")) { if (vfsload("cd9660")) err(EX_OSERR, "vfsload(cd9660)"); endvfsent(); /* flush cache */ error = getvfsbyname("cd9660", &vfc); } if (error) errx(1, "cd9660 filesystem is not available");
if (mount(vfc.vfc_name, dir, mntflags, &args) < 0) err(1, NULL);
vfsload() 関数は失敗すると非 0 値を、成功すると 0 を返します。 vfsload() が失敗した場合、 kldload(2) 用に記述された errno 値が設定され得ます。
GETVFSENT (3) | September 24, 1994 |
総合手引 | セクション 3 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | There are two major products of Berkeley, CA -- LSD and UNIX. We don't believe this to be strictly by coincidence. | ” |
— Jeremy S. Anderson |