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

名称

DEVICE_PROBEデバイスの存在をプローブする

書式

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

int
DEVICE_PROBE( device_t dev);

解説

DEVICE_PROBE() メソッドは、デバイスが存在するかどうか確かめるためにプローブするべきです。デバイスが存在するなら、0 を、見つけることができないなら、 ENXIO を返すべきです。 (メモリ割り付けの失敗のような) 他のエラーがプローブの間に起こるなら、適切なエラーコードが返されるべきです。 2 つ以上のドライバがデバイスにマッチする場合については、優先順位の値を返すことができます。この場合、成功のコードは、最良のマッチを表わす最も大きな値がある 0 以下の値です。失敗のコードは、正の値によって表わされ、正常な UNIX エラーコードは、目的のために使用されるべきです。

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

0 の成功のコードが返されるなら、ドライバは、アタッチされたものであることを仮定することができますが、プローブルーチンが返るとき、リソースを何も保持してはいけません。ドライバは、0 の成功のコードを返すとき、softc が保存されていると仮定することができます。

戻り値

0 以下の値は、成功を示し、0 を越える値は、エラー (errno) を示します。 0 以下の値については、次の通りです: 0 は、最高の優先順位を示し、さらなるプローブは、行われません。 0 未満の値については、より低い値は、より低い優先順位です、例えば、-100 は、-50 より低い優先順位を示します。

次の値は、慣例によりプローブルーチンでマッチする異なった強さを示すために使用されます。特に注記がなければ、これらは、ただ提案された値で、それらに関して不思議なものは何もありません。

BUS_PROBE_SPECIFIC
再プローブすることができない、そして他のドライバが存在するかもしれない可能性ががないドライバ (すべての規則に従わない通常古いドライバ、または特別に必要なドライバ)。
BUS_PROBE_VENDOR
デバイスは、業者のドライバによってサポートされます。これは、まだ FreeBSD のツリーと統合されていないソースまたはバイナリドライバのためのものです。ベース OS での使用は、禁止されています。
BUS_PROBE_DEFAULT
デバイスは、いくつかのプラグアンドプレイ ID にマッチしている通常のデバイスです。これは、ドライバが使用する通常の返り値です。ツリー中のほとんどすべてのドライバが、この値を返すべきであることを目的としています。
BUS_PROBE_LOW_PRIORITY
ドライバは、古いドライバ、またはそうでなければ、与えられたプラグアンドプレイ ID のためのそれほど望ましくないドライバです。ドライバには、ハードウェアデバイスのオーバラップするシリーズををサポートする 2 つのドライバがあるときのような特別な要件があります。この場合は、新しいものをサポートするものは、 BUS_PROBE_DEFAULT を返しますが、行の古い部分をサポートするものは、この値を返します。
BUS_PROBE_GENERIC
一般的に、ドライバは、デバイスのタイプにマッチします。これによって、一般的に、ドライバは、特殊化しているドライバが、ある理由で特別な処理を必要とする特定のタイプのシリアルポートにマッチして、すべてのシリアルポートにマッチすることができます。
BUS_PROBE_HOOVER
ドライバは、バス上のすべての要求されていないデバイスにマッチします。 ugen(4) デバイスが、1 つの例です。
BUS_PROBE_NOWILDCARD
ドライバは、親が、どの子供を管理したらよいかを伝えることを予想し、プローブは、実際に終わっていません。デバイスは、親のバスが、このドライバを使用するために明確に伝えた場合にだけ、マッチします。

作者

このマニュアルページは、 Doug Rabson によって書かれました。
February 8, 2012 FreeBSD