linux网络驱动 poll,网络 – Linux网络驱动程序中的并发:probe()VS ndo_open(),ndo_start_xmit()VS NAPI poll()...
任何人都可以解释在
Linux网络驱动程序中是否需要在以下两种情况下进行额外的同步(例如锁定)?我对内核2.6.32和更新版本感兴趣.
1.probe VS .ndo_open
在PCI网卡的驱动程序中,net_device实例通常在.probe()回调中注册.假设驱动程序在net_device_ops中指定.ndo_open回调,执行其他必要的操作,然后调用register_netdev().
是否可以在register_netdev()之后但在.probe回调结束之前由内核调用.ndo_open回调?我认为它是,但可能是,有更强的保证,确保设备可以在.probe结束之前打开?
换句话说,如果.probe回调访问,例如,在register_netdev()和ndo_open回调之后的net_device结构的私有部分也访问该部分,我是否需要使用锁或其他方法来同步这些访问?
2. .ndo_start_xmit VS NAPI民意调查
是否有任何保证,对于给定的网络设备,驱动程序提供的.ndo_start_xmit回调和NAPI轮询回调永远不会同时执行?
我知道.ndo_start_xmit执行时至少禁用BH,并且在softirq中运行poll,因此BH上下文.但是这只序列化了这些回调在本地CPU上的执行.同一网络设备的.ndo_start_xmit和poll是否可以在不同的CPU上同时执行?
如上所述,如果这些回调访问相同的数据,是否需要用锁或其他东西保护数据?
欢迎参考内核代码和/或文档.
编辑:
为了检查第一种情况,我进行了一项实验,并在e1000驱动程序(内核:3.11-rc1)中调用register_netdev()之前添加了1分钟的延迟.我还在.probe和.ndo_open回调中添加了调试打印.然后我加载了e1000.ko,并尝试在延迟结束之前访问它服务的网络设备(实际上,NetworkManager在我之前做了),然后检查了系统日志.
结果:是的,甚至可以在.probe结束之前调用.ndo_open,尽管“竞赛窗口”通常很小.
第二种情况(.ndo_start_xmit VS NAPI民意调查)仍然不清楚,任何帮助表示赞赏.
linux网络驱动 poll,网络 – Linux网络驱动程序中的并发:probe()VS ndo_open(),ndo_start_xmit()VS NAPI poll()...相关推荐
- Linux系统驱动全吗,linux系统需要给硬件安装驱动程序么?谁推荐一下linux系统阿~要驱动最全...
需要,不过大部分linux都自带,少量的也都有自动安装文件 比如ati的显卡驱动什么的. 之前还自己写过驱动,linux的驱动比windows的驱动透明度高很多 大部分硬件基本上 都可以识别的 也可以 ...
- linux设备驱动归纳总结(八):2.match.probe.remove
CU首页 ┊ fh265>>博客 微博 相册 个人中心 好友 消息 [退出] ┊ 随便看看 公告:缅怀Dennis Ritchie活动开赛啦! 小白的博客--提升自已,分享别人 xiaob ...
- linux内核网络驱动框架(linux驱动开发篇)
网络驱动的核心: 1.就是初始化 net_device 结构体中的各个成员变量, 2.然后将初始化完成以后的 net_device 注册到 Linux 内核中 1.网络设备(用net_device结构 ...
- linux内核下网络驱动流程,基于Linux内核驱动的网络带宽测速方法与流程
本发明涉及一种测速方法,尤其是一种网络带宽测速方法. 背景技术: :电信运营商为客户提供一定带宽的Internet接入:为了检验带宽是否达标,一般均由客户使用个人电脑在网页上直接测速.但是随着智能网关 ...
- linux网卡驱动开发视频,Linux下网卡驱动程序的开发.doc
Linux下网卡驱动程序的开发 论文题目:Linux下网卡驱动程序的开发 专 业: 年 级: 学生学号: 学生姓名: 指导教师: 完成时间: Linux下网卡驱动程序的开发 八年经验 专业指导毕业设计 ...
- linux gpio设备驱动程序,嵌入式Linux设备驱动开发之:GPIO驱动程序实例-嵌入式系统-与非网...
11.3 GPIO驱动程序实例 11.3.1 GPIO工作原理 FS2410开发板的S3C2410处理器具有117个多功能通用I/O(GPIO)端口管脚,包括GPIO 8个端口组,分别为GPA(2 ...
- 嵌入式linux设备驱动程序是,嵌入式Linux设备驱动开发之:按键驱动程序实例-嵌入式系统-与非网...
11.6 按键驱动程序实例 11.6.1 按键工作原理 LED和蜂鸣器是最简单的GPIO的应用,都不需要任何外部输入或控制.按键同样使用GPIO接口,但按键本身需要外部的输入,即在驱动程序中要处理 ...
- linux内核驱动ldd3_走进linux 驱动开发 之 内核模块
一.Linux内核简介 1.宏内核与微内核 内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务 ...
- linux 网卡驱动分析,基于linux下网卡驱动分析及实现技术研究
摘 要 Linux技术是当前计算机技术中最大的一个热点,在我国以及全世界得到了迅猛的发展,被广泛的应用于嵌入式系统.服务器.网络系统.安全等领域.从而使得掌握在 Linux环境下的开发技术,成为 ...
- linux无线网卡驱动文件安装,linux无线网卡驱动安装
环境 在笔记本里的虚拟机10.0版本,centos-6.5 无线网卡fast-fw300um 第一步要查看芯片 lsusb 当你得到芯片之后接下来查看内核,如果内核已经有芯片模块就不用再装了,如 ...
最新文章
- [异常笔记] spring cloud 服务消费者启动-2018040501
- 2021年最后几天,使用SSM实现网上购物商城系统
- 学python入门书-如何学习Python,以及新手如何入门?
- 如何一站式解决“人财物事”管理难题?
- qsort()与sort的用法(收藏)
- 英国文化影响管理风格_文化如何影响用户体验
- win32键盘输入python_python-win32api键盘输入教程
- 安装计算机主板应注意,组装计算机并仅更换主板时要注意的事项
- 定时让电脑进入休眠状态
- matlab 高级函数 —— circshift、squeeze
- VGG19识别CIFAR10数据集(Pytorch实战)
- HTML基本结构标签
- ArcGIS Server manger管理页面无法打开问题解决
- 安徽大学计算机专业全国大学排名,2017安徽大学优势专业排名
- 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll。尝试重新安装该程序以解决此问题。
- 【风马一族_构思】时光穿梭机
- 使用BENCHMARKSQL工具对kingbase灌数据执行语句删除这些外键时报错constraint does not exist
- 从国企到阿里的面试经历(一)
- Golang mgo 剖析之 Session
- 人工智能生态交易平台