G_PROVIDER(9) | FreeBSD Kernel Developer's Manual | G_PROVIDER(9) |
名称
g_new_providerf, g_destroy_provider, g_error_provider — GEOM プロバイダ管理書式
#include < geom/geom.h> struct g_provider *
g_new_providerf( struct g_geom *gp, const char *fmt, ...);
void
g_destroy_provider( struct g_provider *pp);
void
g_error_provider( struct g_provider *pp, int error);
解説
GEOM プロバイダは geom がサービスを提供するフロントゲートです。プロバイダは“ /dev に現れるディスクのようなもの”–言い換えれば論理ディスク、です。すべてのプロバイダには、3 つの主要な特性があります: 名前、セクタサイズとサイズです。g_new_providerf() 関数は与えられた geom gp で新しいプロバイダを作成します。 devfs(5) のデバイスとして現れる、プロバイダの名前は引数の残りから printf(3) のような方法で作成されます。作成の後、呼び出し側は、他の必要な初期化処理と同様にプロバイダの mediasize と sectorsize を設定しなければなりません、そして、最初に、 ENXIO に設定されるプロバイダのエラーをリセットするために g_error_provider() を呼び出します。
g_destroy_provider() 関数は、与えられたプロバイダを破壊して、すべての関係づけられたイベントを取り消して、対応する devfs エントリを削除します。
g_error_provider() 関数は、プロバイダのエラー値を設定するために使用されます。 0 以外に設定されるなら、すべての I/O 要求は、アクセスカウントが増加できないのと同様に拒否されます (エラー error が返されます)。
制限/条件
g_new_provider():- プロバイダ名はユニークであるべきですが、これは GEOM によって強制されません。名前がユニークでないなら、プログラマのエラーである同じ名前の 2 つ (以上) のファイルの状態となります。
- geom gp には、定義された start 方法がなければなりません。
- トポロジロックは保持されなければなりません。
g_destroy_provider():
- プロバイダは、コンシューマ (消費者) をアタッチしてはいけません。
- アクセスカウントは 0 でなければなりません。
- トポロジロックは保持されなければなりません。
戻り値
g_new_providerf() 関数は新たに作成されたプロバイダへのポインタを返します。使用例
見本のプロバイダを作成し、パラメータを設定し、それを使用可能にします。
struct g_provider * create_example_provider(struct g_geom *gp) { struct g_provider *pp; g_topology_lock(); pp = g_new_providerf(gp, "example_provider"); g_topology_unlock(); pp->mediasize = 65536; pp->sectorsize = 512; g_error_provider(pp, 0); return (pp); }
関連項目
geom(4), DECLARE_GEOM_CLASS(9), g_access(9), g_attach(9), g_bio(9), g_consumer(9), g_data(9), g_event(9), g_geom(9), g_provider_by_name(9), g_wither_geom(9)作者
このマニュアルページは、 <pjd@FreeBSD.org>によって書かれました。January 16, 2004 | FreeBSD |