- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从sys_ioctl()到8139too驱动中的rtl8139_get_settings()过程
Rtl8139too.c 驱动分析
———从sys_ioctl()到驱动中的rtl8139_get_settings()过程
(说明:分析代码2.6.35.4 )
在2.6.24 内核代码中,在fs/ioctl.c 中定义的是sys_ioctl(),但是在2.6.35.4 内核中定义的代码
是(fs/ioctl.c):
因此,分析的开始函数是上面的这个函数。
linu 内核把socket 套接字当作文件来处理,内核在创建socket 套接字时,为套接字分配文件id
以及生成与id 对应的文件节点,节点的i_mode 域是代表文件类型的位域标志字段。在本文档所述的内容
中,fd 就是指向的是一个套接字的文件句柄。
前提:使用ethtool 工具时,键入的命令是:ethtool eth0;以此为例子,来说明调用流程,当然,
要得到该命令所期望的结果,需要调用rtl8139too.c 中的rtl8139_get_settings().
接着调用,do_vfs_ioctl()vfs_ioctl() :
在vfs_ioctl()中执行f_op-unlocked_ioctl()函数,即sock_ioctl()函数(net/socket.c),因为
fd 是一个socket 文件句柄,则fd 指向的文件是一个socket 文件,则在net/socket.c 中:
下面接着f_op-unlocked_ioctl()继续分析:
在sock_ioctl()中——sock_do_ioctl()(net/socket.c)dev_ioctl()
(net/core/dev.c),在dev_ioctl()中,如下图:
先看:
由此可以看到,传进去的参数arg 由此发生了变化:
在ethtool 应用程序中是ifr系统调用中argdev_ioctl()中ifr ,为达到这个目
的使用了copy_from_user()函数。
并且在dev_ioctl()中:
根据传进去的cmd 参数:SIOCETHTOOL,调用:dev_ioctl()dev_ethtool()
(net/core/ethtool.c),此时传给dev_ethtool()的参数变成为了ifr,这个ifr 即是用来承载所要得到
的数据的载体,通过copy_to_user()将这个承载着数据的载体to_user_space 的ethtool 应用程序:
在dev_ethtool()(net/core/ethtool.c):
在dev_ethtool()中,根据在ethtool 用户态应用程序中输入的命令行参数eth0,即ifr_name,得
到对应接口网卡的net_device 即上面代码中的dev;
注意,让我们看看上面代码中的ifr-ifr_data,首先我们回到用户态的ethtool 应用程序中的函数
do_gdrv()中看看:
可以看到,ifr-ifr_data=(caddr_t)drvinfo。
结合上面的代码就可以知道:useraddr 中存放的就是ethtool_drvinfo 类型的drvinfo 的起始地
址。
在ethtool 的源代码中,include/linux/ethtool.h 中,有ethtool_drvinfo 的定义:
从此处可以看到,drvinfo 的开始的__u32 存放的就是该drvinfo 需要获取什么信息所对应的
cmd,所以在dev_ethtool()中:
在dev_ethtool()中,定义了u32 的ehtcmd,则根据drvinfo 的起始地址useraddr,使用
copy_from_user()得到和该drvinfo 所对应的cmd,并用ethcmd 作为case 判断条件,找到对应的
操作:
根据ethcmd,dev_ethtool()ethtool_get_settings(dev,useraddr)
(net/core/ethtool.c ):
即dev 为ehto 对应网卡接口的net_dev ,useraddr 是用来承载信息的ethtool_drvinfo 的起
始地址。
下面,来看看ethtool_get_settings()的代码:
从中可以看到,在这个函数中调用了和eht0 网卡接口对应的net_dev 结构的函数指针:
dev—ethtool_o
您可能关注的文档
- 材料取样及标准.doc
- 闻一多先生的说和做1ok.pptx
- 2012-2013第二学期八年级教育教学计划.doc
- 交通运输专业英语课件(Automatic Transmissions).ppt
- 差错控制编码在蓝牙的应用.ppt
- 电厂模板、脚手架施工方案(含受力计算).doc
- 2009年物理会考.docx
- DS材料进场报验单.doc
- 庆“六一活动简报.doc
- 第一节应收账款.ppt
- 2026高考数学一轮复习课件 人教A版 第六章 §6.7 子数列问题.pptx
- 2026高考数学一轮复习课件 人教A版 第八章 §8.1 直线的方程.pptx
- 2026高考数学一轮复习课件 人教A版 第四章 §4.8 解三角形.pptx
- 2026高考数学一轮复习课件 人教A版 第一章 必刷小题1 集合、常用逻辑用语、不等式.pptx
- 2026高考数学一轮复习课件 人教A版 第四章 §4.2 同角三角函数基本关系式及诱导公式.pptx
- 2026高考数学一轮复习课件 人教A版 第二章 §2.6 二次函数与幂函数.pptx
- 2026高考数学一轮复习课件 人教A版 第二章 必刷小题3 基本初等函数.pptx
- 2026高考数学一轮复习课件 人教A版 第十章 必刷大题20 概率与统计.pptx
- 2026高考数学一轮复习课件 人教A版 第六章 §6.4 数列中的构造问题.pptx
- 2026高考数学一轮复习课件 人教A版 第二章 §2.7 指数运算与对数运算.pptx
文档评论(0)