EN JA
G_PROVIDER(9)
G_PROVIDER(9) FreeBSD Kernel Developer's Manual G_PROVIDER(9)

名称

g_new_providerf, g_destroy_provider, g_error_providerGEOM プロバイダ管理

書式

#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) のような方法で作成されます。作成の後、呼び出し側は、他の必要な初期化処理と同様にプロバイダの mediasizesectorsize を設定しなければなりません、そして、最初に、 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); 
}

作者

このマニュアルページは、 Pawel Jakub Dawidek <pjd@FreeBSD.org>によって書かれました。
January 16, 2004 FreeBSD