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