加载设备驱动模块
设备驱动模块被编译成.o或者.ko,类似elf程序有一个入口main函数,.ko模块入口函数是module_init(igbuio_pci_init_module),igbuio_pci_init_module( )在insmod后首先执行。代码片段如下:
static int __init
igbuio_pci_init_module(void)
{
return pci_register_driver(&igbuio_pci_driver);
}
pci_register_driver是一个linux内核提供用来进行pci注册的标准接口,将igbuio_pci_driver 作为作为参数传入,这个结构在驱动程序里定义,作为驱动程序和PCI设联系的纽带。
static struct pci_driver igbuio_pci_driver = {
.name = "igb_uio",
.id_table = NULL, // uio设备驱动加载后不主动接管任何设备
.probe = igbuio_pci_probe,
.remove = igbuio_pci_remove,
};
.name:驱动名
.id_table:网卡id,驱动注册后接管的网卡id
.probe:注册处理函数
.remove:注销处理函数
常规网卡驱动,在open dev时候在申请数据存储的缓存(