Linuxドライバ、プローブ関数がときに呼び出されます  

は、最近たkobject、KSET上のLinuxデバイスドライバモデルを、見たので、非常に明確な使命ではありません。ある場合はその初期化関数はそれを呼び出す:あなたはこのような構造のdevice_driver構造体を参照すると、質問を考えますか?ドライブ前に登録機能は、長い構造体S3C2410はマッハsmdk2410.cのplatform_deviceに係合する駆動時の駆動PCIのPCIは、それを呼び出すことができ係合するときに*追加されたデバイスも呼ばれるsmdk2410_devices {}。しかし、私は特定のドライバの登録プロセスおよびプローブのためのコールについて考えたことはありません。

次に、トラッキングSourceInsightビットを開く:driver_registerから

は見えます。int driver_register(構造体のdevice_driver * DRV){klist_init(& DRV-> klist_devices、klist_devices_get、klist_devices_put); init_completion( & DRV->アンロード);戻りbus_add_driver(DRV);} klist_initのinit_completionと一人でそれを行っていない、仕事の一部は、このデバイスのモデルを行うには2.6とすることができます。直観はbus_add_driverを行くために私に語りました。で

bus_add_driver:たkobjectようによりklistを、ATTRあると。またはデバイスモデルに関連します。しかしありますdriver_attach(DRV);単一のような名前を聞く:ボイドdriver_attach(構造体のdevice_driver * DRV){bus_for_each_dev(;バス、NULL、DRV、__driver_attach DRV->);}バス上のこの馴染みのトラバース装置はそして__driver_attachで設定します。 __driver_attachではこの中で、主に以下のとおりです。driver_probe_device(DRV、DEV); driver_probe_deviceは行くと見に行きました:DRV->(もし:!非常に重要な存在である。BUS->一致&& DRV->バスは、 - >マッチ(DEV、DRV))ジャンプが完了;明らかに、match関数は、バスドライバで呼び出されます。それが1を返した場合、それは、そうでない場合は、最大完了続けることができます。継承実行ワード:IF(DRV->プローブ){RET = DRV->プローブ(DEV);(RET)は{DEV->場合、ドライバ= NULL;後藤ProbeFailedが;}限りプローブの存在などと呼ばれています。これは、プローブの呼び出しを完了します。

DRV->でのキープロセスチェーンや、BUS->試合、場所の残りの部分が間違っているので、登録が失敗したが、試合を登録する限り失敗し、返しません、それは間違いなく呼び出すことになるquchengプローブの。あなたは限りバスタイプ構造体のdevice_driver正しい、プローブ関数が常に呼び出される.PCIデバイスは、その中に推定、独自のバスモデルを持っているとして、バスの種類とバスにサインアップし、常に試合1を返し、あなたは見つけることができます決意状態の一致があります。静的INT pci_bus_match(構造体デバイス* DEV、構造体のdevice_driver * DRV){構造体pci_dev * pci_dev = to_pci_dev(DEV);構造体pci_driver * pci_drv = to_pci_driver(DRV); constの構造体pci_device_id * found_id; found_id = pci_match_device(pci_drv、pci_dev)。 (found_id)リターン1があれば、0を返す;}、次いで追跡するくるid_table主に馴染みに基づいている知っています。別の解決策------------------------------- ----------------- -------------------------------------------------- ----------------------------

はdriver_registerから見える、ここで私はここにある:

INT driver_register(構造体のdevice_driver * DRV){IF((DRV-> BUS->プローブ&& DRV->プローブ)

Copyright © Windowsの知識 All Rights Reserved