WEB开发网
开发学院软件开发Shell Linux编程:网络设备驱动详解 阅读

Linux编程:网络设备驱动详解

 2009-06-30 04:36:00 来源:WEB开发网   
核心提示:在此仅仅讨论网络设备驱动的一般写法,有关硬件部分的相关代码由于硬件规格不同,Linux编程:网络设备驱动详解,予以省略,有什么地方错误,如果是其他的ESIA,PCMCIA,或补充,欢迎大家提出

在此仅仅讨论网络设备驱动的一般写法,有关硬件部分的相关代码由于硬件规格不同,予以省略。有什么地方错误,或补充,欢迎大家提出。

1, 驱动模块的加载和卸载

如果网络设备(包括wireless)是PCI规范的,则先是向内核注册该PCI设备(pci_register_driver),然后由pci_driver数据结构中的probe函数指针所指向的侦测函数来初始化该PCI设备,并且同时注册和初始化该网络设备。

如果网络设备(包括wireless)是PCMCIA规范的,则先是向内核注册该PCMCIA设备(register_pccard_driver),然后driver_info_t数据结构中的attach函数指针所指向的侦测函数来初始化该PCMCIA设备,并且同时注册和初始化该网络设备。

static int __init tg3_init(void)

{

//先注册成PCI设备,并初始化,如果是其他的ESIA,PCMCIA,用其他函数

return pci_module_init(&tg3_driver);

}

static void __exit tg3_cleanup(void)

{

pci_unregister_driver(&tg3_driver);//注销PCI设备

}

module_init(tg3_init); //驱动模块的加载

module_exit(tg3_cleanup); //驱动模块的卸载

申明为PCI设备:

static struct pci_driver tg3_driver = {

.name = DRV_MODULE_NAME,

.id_table = tg3_pci_tbl, //此驱动所支持的网卡系列,vendor_id, device_id

.probe = tg3_init_one, //初始化网络设备的回调函数

.remove = __devexit_p(tg3_remove_one), //注销网络设备的回调函数

.suspend = tg3_suspend, //设备挂起函数

.resume = tg3_resume //设备恢复函数

};

1 2 3 4 5 6  下一页

Tags:Linux 编程 网络设备

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接