- 8
- 0
- 约2.4千字
- 约 8页
- 2018-03-16 发布于河南
- 举报
从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浙中医大二院劳务派遣招聘33人备考题库精选答案详解.docx
- 2026浙江农林大学继续教育学院劳务派遣工作人员招聘1人备考题库参考答案详解.docx
- 2026河南郑州管城回族区嵩阳学校(小学部)招聘3人备考题库及答案详解1套.docx
- 2026河南许昌市直机关遴选公务员14人备考题库精选答案详解.docx
- 2026海康威视创新业务招聘备考题库及参考答案详解一套.docx
- 2026河南洛阳日报报业集团视觉梦工坊招聘4人备考题库有完整答案详解.docx
- 2026海南琼海市现代农业发展投资有限公司招聘4人备考题库(第1号)及完整答案详解.docx
- 2026河北秦皇岛烟草机械有限责任公司招聘21人备考题库精编答案详解.docx
- 2026河北石家庄市规划馆招聘派遣制人员3人备考题库精编答案详解.docx
- 2026浙江省社会主义学院招聘专职教师3人备考题库及答案详解(新).docx
最近下载
- 寒假蓄力,一模冲刺 课件--2025-2026学年高三上学期寒假规划班会课.pptx
- 环境工程仪表及自动化项目八 环境工程控制仪表的认识与使用.ppt VIP
- 卧式连续结晶罐在蔗糖生产中的应用.docx VIP
- 火力发电厂节能降耗技术改造方案(最新版).docx VIP
- 深信服桌面云VDC-用户手册_V5.9.0.pdf VIP
- 穴位贴敷法操作流程新.docx VIP
- 吊车吊装施工方案.docx VIP
- JB∕T 12935-2016 扭矩传感器.pdf VIP
- 2025年春最新小学外研版三年级英语下册单词清单及默写.docx VIP
- 高中学校党支部书记2025述职报告:以内涵建设为核,党建引领为魂,全面提升教育品位.docx VIP
原创力文档

文档评论(0)