DEVICE_PROBE(9)

名称
DEVICE_PROBE - デバイスの存在のプローブ

書式
<sys/param.h> <sys/bus.h> int DEVICE_PROBE(device_t dev)

解説
このデバイスメソッドはデバイスがあるかどうかを知るためにプローブするべきです。 デバイスが存在すれば 0 を、デバイスが見つからなければ ENXIO を返すべきです。 プローブの間にその他のエラー(メモリ割当の失敗など)が起こった場合は、 適切なエラーコードが返されるべきです。 1 つのデバイスに 1 つ以上のドライバが当てはまるような場合のために、 優先順位を返すことができます。 この場合、成功の値は 0 以下の値で、 最も大きな値が最も適切であることを意味します。 失敗の値は正の値で表現され、 通常の UNIX エラーコードが目的に応じて使用されるべきです。

ドライバが 0 より小さい成功値を返す場合、 ドライバはそのデバイスにアタッチされるのが 同じドライバであると想定してはいけません。 特に、softc 構造体に格納されたすべての値が アタッチメソッドで利用可能であると想定してはいけませんし、 また、アタッチメソッドが呼ばれた場合、 プローブの間に割り当てられたあらゆるリソースは開放して 再割り当てしなければなりません。 成功値 0 を返す場合には、 ドライバはそのドライバがアタッチされると想定することができます。

バスを実装するデバイスは、 バスに接続されたデバイスの存在をプローブし それらを子デバイスとして追加するために、 このメソッドを使用するべきです。 このメソッドが bus_generic_attach(9) の使用と結合していれば、 子デバイスは自動的にプローブされ、アタッチされるでしょう。

戻り値
0 以下の値は成功を表し、0 より大きな値はエラー(errno)を表します。 0 以下の値の時、0 は最高の優先順位を表し、それ以上のプローブは行ないません。 0 未満の値は、低い値程、低い優先順位を表します。 たとえば、-100 は -50 よりも低い優先順位を表します。

関連項目
device(9), DEVICE_ATTACH(9)

作者
このマニュアルページは Doug Rabson が書きました。