上锁

net_device结构的组织一节可知,dev_base列表以及dev_name_head和dev_name_index两张hash表由dev_base_list锁保护。然而,该锁只用于对列表和hash表的访问予以串行化,而不是对net_device数据结构内容变更予以串行化。net_device内容的变更是由Routing Netlink信号量(rtnl_sem)负责;而此锁的取得和释放分别通过rtnl_lock和rtnl_unlock完成。此信号量可用于net_device实例的变更的串行化,而这些变更来自于:

运行期间事件

  例如,当连接状态变更时(例如,网络电缆插入或者拔除时),内核也必须通过修改dev-flags改变设备状态。

配置变更

  当用户应用来自net-tools套件的ifconfig和route命令,或者来自IPROUTE2套件的ip命令改变配置时,内核会通过ioctl命令和Netlink套接字的ip命令改变配置时,内核会通过ioctl命令和NetLink套接字接收到通知。由这些接口启用的函数都必须使用锁。

net_device数据结构包括一些可用于上锁的字段

ingress_lock

queue_lock

  当处理入口和出口流量调度是,分别由流量控制使用。

xmit_lock

xmit_lock_owner

  用于同步设备驱动程序hard_start_xmit函数的访问。

最新文章

  1. three.js模型
  2. Qt Creator 黑色主题配置
  3. Java Web学习系列——创建基于Maven的Web项目
  4. java:打包
  5. javascript的本地存储 cookies、localStorage
  6. 正则匹配url中的query参数信息
  7. CyQ.data MDataTable
  8. UNIX环境高级编程——管道和FIFO限制
  9. ArcGIS Server注册数据库——以oracle为例
  10. 自定义QMenu
  11. 微信小程序:下拉刷新
  12. 096实战 在windows下新建maven项目
  13. 腾讯云Badjs镜像使用入门
  14. Git两分钟指南-学习入门参考
  15. node.js fs,http
  16. [NOIP2018]保卫王国(树形dp+倍增)
  17. Hadoop2源码分析-RPC机制初识
  18. Webkit内核探究【2】——Webkit CSS实现
  19. 使用GAN 进行异常检测——anoGAN,TODO,待用于安全分析实验
  20. Python自动化面试必备 之 你真明白装饰器么?

热门文章

  1. 模拟器SDK路径
  2. [ An Ac a Day ^_^ ] HihoCoder 1249 Xiongnu's Land 线性扫描
  3. MC-设置 止盈
  4. Python 拆分字符串
  5. Colorful(Folders星语多彩文件夹) v1.7绿色版
  6. java innerclass
  7. js上拉跳转原理
  8. 将当天时间转换为unix时间戳
  9. win7系统,apache2.2下添加PHP5的配置详解
  10. iptables基础知识