数据包从网卡到socket的整个过程
以ibg驱动为例
驱动使用module_init向内核注册一个初始化函数,驱动被加载时,内核调用这个函数
/**
* igb_init_module - Driver Registration Routine
*
* igb_init_module is the first routine called when the driver is
* loaded. All it does is register with the PCI subsystem.
**/
static int __init igb_init_module(void)
{
int ret;
pr_info("%s - version %s\\n", igb_driver_string, igb_driver_version);
pr_info("%s\\n", igb_copyright);
/* ... */
ret = pci_register_driver(&igb_driver);
return ret;
}
module_init(igb_init_module);
初始化的大部分工作在pci_register_driver中完成