スポンサーリンク

DEVICE_PROBE(9) FreeBSD カーネル開発者マニュアル DEVICE_PROBE(9)

名称

DEVICE_PROBE − デバイスの存在のプローブ

書式

#include <sys/param.h>
#include <sys/bus.h>

int

DEVICE_PROBE(device_t dev);

解説

DEVICE_PROBE() メソッドはデバイスがあるかどうかを知るためにプローブするべ きです。デバイスが存在すれば 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 によって書かれました。

FreeBSD 10.0 January 6, 2005 FreeBSD 10.0

スポンサーリンク