linux網(wǎng)絡(luò)設(shè)備中的加載與卸載方法
學(xué)習(xí)linux網(wǎng)絡(luò)設(shè)備時(shí),你可能會(huì)遇到加載與卸載的問題,這里列舉了多種加載與卸載的命令,在這里小編拿出來和大家分享一下。望能給大家一些幫助。
如果linux網(wǎng)絡(luò)設(shè)備(包括wireless)是PCI規(guī)范的,則先是向內(nèi)核注冊(cè)該P(yáng)CI設(shè)備(pci_register_driver),然后由pci_driver數(shù)據(jù)結(jié)構(gòu)中的probe函數(shù)指針?biāo)赶虻膫蓽y(cè)函數(shù)來初始化該P(yáng)CI設(shè)備,并且同時(shí)注冊(cè)和初始化該linux網(wǎng)絡(luò)設(shè)備。
如果linux網(wǎng)絡(luò)設(shè)備(包括wireless)是PCMCIA規(guī)范的,則先是向內(nèi)核注冊(cè)該P(yáng)CMCIA設(shè)備(register_pccard_driver),然后driver_info_t數(shù)據(jù)結(jié)構(gòu)中的attach函數(shù)指針?biāo)赶虻膫蓽y(cè)函數(shù)來初始化該P(yáng)CMCIA設(shè)備,并且同時(shí)注冊(cè)和初始化該linux網(wǎng)絡(luò)設(shè)備。
- static int __init tg3_init(void)
- {
- //先注冊(cè)成PCI設(shè)備,并初始化,如果是其他的ESIA,PCMCIA,用其他函數(shù)
- return pci_module_init(&tg3_driver);
- }
- static void __exit tg3_cleanup(void)
- {
- pci_unregister_driver(&tg3_driver);//注銷PCI設(shè)備
- }
- module_init(tg3_init); //驅(qū)動(dòng)模塊的加載
- module_exit(tg3_cleanup); //驅(qū)動(dòng)模塊的卸載
linux網(wǎng)絡(luò)設(shè)備申明為PCI設(shè)備:
- static struct pci_driver tg3_driver = {
- .name = DRV_MODULE_NAME,
- .id_table = tg3_pci_tbl, //此驅(qū)動(dòng)所支持的網(wǎng)卡系列,vendor_id, device_id
- .probe = tg3_init_one, //初始化linux網(wǎng)絡(luò)設(shè)備的回調(diào)函數(shù)
- .remove = __devexit_p(tg3_remove_one), //注銷linux網(wǎng)絡(luò)設(shè)備的回調(diào)函數(shù)
- .suspend = tg3_suspend, //設(shè)備掛起函數(shù)
- .resume = tg3_resume //設(shè)備恢復(fù)函數(shù)
- };
【編輯推薦】