1. cfg80211_init
• cfg80211_wq工作隊列主要處理以下工作:
1) 清除:wireless_dev.cleanup_work
2) 掃描:cfg80211_registered_device.scan_done_wk
3) 事件:cfg80211_registered_device.event_work
• 註冊netlink,其名為:"nl80211",其操作為:nl80211_ops
net/wireless/core.c
static int __init cfg80211_init(void){int err; // 註冊網路命名空間err = register_pernet_device(&cfg80211_pernet_ops);if (err)goto out_fail_pernet; // 註冊ieee80211_class類err = wiphy_sysfs_init();if (err)goto out_fail_sysfs; // 註冊網路通知,以接收網路事件err = register_netdevice_notifier(&cfg80211_netdev_notifier);if (err)goto out_fail_notifier; // 註冊netlink "nl80211",其操作為nl80211_opserr = nl80211_init();if (err)goto out_fail_nl80211; // 建立sys/class/ieee80211目錄ieee80211_debugfs_dir = debugfs_create_dir("ieee80211", NULL);err = regulatory_init();if (err)goto out_fail_reg; // 建立名為“cfg80211”的核心線程cfg80211_wq = create_singlethread_workqueue("cfg80211");if (!cfg80211_wq)goto out_fail_wq;return 0;out_fail_wq:regulatory_exit();out_fail_reg:debugfs_remove(ieee80211_debugfs_dir);out_fail_nl80211:unregister_netdevice_notifier(&cfg80211_netdev_notifier);out_fail_notifier:wiphy_sysfs_exit();out_fail_sysfs:unregister_pernet_device(&cfg80211_pernet_ops);out_fail_pernet:return err;}subsys_initcall(cfg80211_init);