私は最初のステップをLinuxカーネルデバイスドライバーの開発に移しています。
私は、pci-eカードpci_register_driver
の場合、タイプのオブジェクトを介して情報を提供するように呼び出す必要があることを学びましたpci_driver
(例の下)。モジュールをロードするとき(経由insmod
)経由で渡された情報.id_table
が見つかった場合、.probe
関数が呼び出されます。
私は今、自分の.probe
関数がまったく呼び出されていないので(を介してログを追加しましたprintk
)、含まれている情報が間違っていると想定するpci_device_id
必要がありますよね?
この情報をハードウェア自体から直接取得する方法はありますか?LinuxボックスにPCI-Eカードを差し込むと、それに関するすべての情報を見つけることができますか?たぶんBIOSまたはsysのファイルを読んでいますか?
どんな助けでも大歓迎です。
AFG
static struct pci_driver my_driver = {
// other here
.id_table = pci_datatable,
.probe = driver_add
//
};
static struct pci_device_id pci_datatable[] __devinitdata =
{
{ VendorID, PciExp_0041, PCI_ANY_ID, PCI_ANY_ID },
{ 0 },
};
int __devinit DmaDriverAdd(
struct pci_dev * pPciDev,
const struct pci_device_id * pPciEntry
)
{
// my stuff!
}