GETVFSENT
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
getvfsent
setvfsent
endvfsent
vfsisloadable
vfsload
- 仮想ファイルシステムモジュールを管理
索引
ライブラリ
Lb libc
索引
書式
In sys/param.h
In sys/mount.h
Ft struct ovfsconf *
Fn getvfsent void
Ft void
Fn setvfsent int cachelist
Ft void
Fn endvfsent void
Ft int
Fn vfsisloadable const char *name
Ft int
Fn vfsload const char *name
索引
解説
Fn getvfsent
関数によって、カーネルが管理するインストール済の仮想ファイルシステムモジュール
のリストに、簡単にアクセスできます。リストのファイルシステムを
1 回に
1 つづつ段階的に処理します。利用できるデータがそれ以上なくなると、
ヌル
ポインタが返ります。構造体
``struct ovfsconf
''
のフィールドは次のとおりです。
- vfc_name
-
ファイルシステムの名前。
- vfc_index
-
カーネルによって割り当てられ
mount(2)
の呼び出しに使用された、ファイルシステムのタイプ番号。
- vfc_refcount
-
このファイルシステムの参照数
(通常はマウント数ですが、
アンロードできないかカーネルに静的にリンクされている
ファイルシステムでは、マウント数に 1 を加えたものになります)。
- vfc_flags
-
フラグビット。
フラグは次のように定義されています:
- VFCF_STATIC
-
カーネルに静的に組み込まれている
- VFCF_NETWORK
-
データをネットワーク経由で取得し得る
- VFCF_READONLY
-
書き込みは未実装
- VFCF_SYNTHETIC
-
データは実ファイルを表現しない
- VFCF_LOOPBACK
-
マウント済みのファイルシステムに対する別名
- VFCF_UNICODE
-
ファイル名を Unicode で格納
Fn setvfsent
および
Fn endvfsent
関数は、
sysctl(3)
によってカーネル
からまとめて取得されるファイルシステムリストの、キャッシング制御に
使用されます。
Fn setvfsent
の
Fa cachelist
パラメータが 0 でなければ、これら
検索関数のどれかを最初に呼び出した時点でリストはただ
1 回だけ取り出され、
キャッシュをクリアするために
Fn endvfsent
が呼び出されるまで保持されます。
一般に
Fn setvfsent 1
は、
Fn getvfsent
を使用するプログラムによって呼び出される必要があり、
Fn setvfsent 0
は
(これもデフォルトの状態で)、
Fn vfsload
関数を使用するプログラムによって呼び出される必要があります。
Fn vfsisloadable
関数は、後で
Fn vfsload name
の呼び出しが続きそうだと非 0 値を返します。ここで
``そう''
と言うのは、
Fn vfsisloadable
は
Fn vfsload
が成功するための条件をチェックしないからです。
Fn vfsload
関数は、ファイルシステム
Fa name
の実装カーネルモジュールをロード
しようと試みます。ファイルシステムモジュールを無事に突き止めてロードした
場合は 0 が、その他の場合は非 0 が返ります。この関数を呼び出せるのは次に
示す状況だけです。
-
Fn getvfsbyname
を呼び出して非 0 値が返った場合。
-
Fn vfsisloadable
を呼び出して非 0 値が返った場合。
mount_cd96608
のソースから取った使用例を次に示します。
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);
索引
戻り値
Fn getvfsent
ルーチンは、成功すると静的データ構造体のポインタを、失敗すると
ヌル
ポインタを返します。原因が
sysctl(3)
または
malloc(3)
で失敗した場合は、
errno
がそれら関数用にドキュメントされた値の
1 つに
設定されることがあります。その他の場合
errno
は改変されません。
Fn vfsload
関数は失敗すると非 0 値を、成功すると 0 を返します。
Fn vfsload
が失敗した場合、
kldload(2)
用に記述された
errno
値が設定され得ます。
索引
関連項目
kldload(2),
mount(2),
mount(8)
索引
作者
An -nosplit
このロード可能ファイルシステムサポートは、
An Terry Lambert
による汎用のロード可能カーネルモジュールサポートをベースに、
An Garrett A. Wollman
によって書かれました。
索引
歴史
Fn getvfsent
関数ファミリは
Fx 2.0
ではじめて登場しました。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- 戻り値
-
- 関連項目
-
- 作者
-
- 歴史
-
Time: 07:06:53 GMT, January 12, 2009