DEVICE_PROBE(9)

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

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

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

ドライバが 0 より小さい成功値を返す場合、 ドライバはそのデバイスにアタッチされるのが 同じドライバであると想定してはいけません。 特に、softc 構造体に格納されたすべての値が アタッチメソッドで利用可能であると想定してはいけませんし、 また、アタッチメソッドが呼ばれた場合、 プローブの間に割り当てられたあらゆるリソースは解放して 再割り当てしなければなりません。 加えて、そのプローブルーチンはどんなことがあっても副作用がないことが、 絶対必要条件です。 プローブルーチンは、アタッチルーチンが呼び出される前に 2 回以上 呼び出されることがあります。

成功値 0 を返す場合には、 ドライバはそのデバイスがアタッチされるであろうと想定することはできますが、 プローブルーチンが戻った時にいかなるリソースをも保持してはなりません。 成功コード 0 を返すときには、 ドライバは softc は保存されていると決めてかかることができます。

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

関連項目
device(9), DEVICE_ATTACH(9), DEVICE_DETACH(9), DEVICE_IDENTIFY(9), DEVICE_SHUTDOWN(9)

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