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_ops

err = 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);

linux wireless子系统,Linux Wireless子系统初始化相关推荐

  1. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之Pinctrl子系统和GPIO子系统的使用

    文章目录 前言 1.Pinctrl子系统 1.1.为什么有Pinctrl子系统 1.2.重要的概念 1.3.代码中怎么引用pinctrl 2.GPIO子系统 2.1.为什么有GPIO子系统 2.2.在 ...

  2. Linux中断(interrupt)子系统之四:驱动程序接口层 中断通用逻辑层

    在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层 ...

  3. Linux中断(interrupt)子系统之二:arch相关的硬件封装层

    Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的 ...

  4. Linux中断(interrupt)子系统之一:中断系统基本原理

    这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层.内核版本基于3.3.虽然内核的版本不断地提升,不 ...

  5. linux驱动系列学习之input子系统(二)

    一.input子系统简介 linux系统支持的输入设备众多,例如键盘.鼠标.按键.触摸屏等,linux系统通过抽象出一个input子系统去支持众多的输入设备.input子系统分为三层:上层:输入事件处 ...

  6. linux驱动系列学习之i2c子系统(四)

    一.i2c子系统简介 1. i2c总线 i2c总线因为只用SCL.SDA两根线就实现了设备之间的数据互传,极大的简化PCB布线,因此,2c总线在EEPROM.小型LCD等设备中应用极光.i2c的相关时 ...

  7. Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍

    文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...

  8. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...

    原标题:Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天, ...

  9. LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统...

    1.LXC是什么? LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术. 2.LXC可以做什么? LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的 ...

  10. 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )

    文章目录 一.Linux 内核在操作系统中的层级 二.Linux 内核子系统 三.Linux 内核子系统之间的关系 一.Linux 内核在操作系统中的层级 Linux 内核 所在层级 : 整个计算机系 ...

最新文章

  1. 免费的400GB网络存储空间
  2. 在C#项目中使用SQLite(环境安装问题)
  3. linux源码_从linux源码看epoll及epoll实战揭秘
  4. 寄存器是中央处理器内的组成部分
  5. javascript获取窗口和div位置
  6. linux shell crontab 定时操作(转)
  7. 从想当亿万富翁到职场、创业、爱情、抑郁、学医学武,我的程序人生
  8. 数字图像处理使用计算机对,数字图像处理的应用现状及发展方向
  9. multisim变压器反馈式_基于Multisim 负反馈放大电路的仿真实验分析
  10. Unity Editor 基础篇(三):自定义窗口
  11. 象棋(Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)C++超详细解题
  12. 【Linux】【Shell】如何循环进入文件夹批量处理数据?批量修改文件的脚本
  13. spider_review-爬虫复习1.0
  14. dell710服务器.维护,DellR710硬件及维护手册.pdf
  15. 【backtrader源码解析7】backtrader中mathsupport中计算平均值、方差和标准差的函数的分析(含金量挺低的)
  16. FPGA:偶分频、奇分频
  17. 违规对店铺综合质量评分、个性化推荐影响 以及标题 、修改sku的影响
  18. 中国火星车叫什么名字?
  19. 台州银行信息科技部笔试与面试经验总结
  20. 如何下载O2OA办公开发平台?

热门文章

  1. android 手机如何备份通讯录,手机通讯录怎么备份
  2. 十大硬盘数据恢复软件简评
  3. 模式识别的发展及应用
  4. pmp培训机构哪个好?各pmp培训机构排名如何?
  5. 暴风影音内MEE引擎揭秘
  6. 史上最详细Git使用教程
  7. 用JS写一个电影《黑客帝国》显示屏黑底绿字雨风格的唐诗欣赏器
  8. 京东数据分析工具(京东销售数据如何查询)
  9. 常见的shell命令
  10. linux rhce教程,RHCE之路_Linux教程_Linux公社-Linux系统门户网站