游客:
注册
|
登录
|
帮助
Linux伊甸园论坛
»
Linux内核源代码学习
» 【求助】关于inb和inw的疑问
IBM 集群技术资源全面接触
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 【求助】关于inb和inw的疑问
njngypp
新生入学
UID 204160
精华 0
积分 15(
积分有什么用?
)
帖子 5
阅读权限 10
注册 2007-7-20
状态 离线
#1
使用道具
发表于 2008-4-15 22:58
资料
个人空间
短消息
加为好友
【求助】关于inb和inw的疑问
初学linux内核,在阅读网络设备驱动程序时对inb和inw函数的用法感到不解:
(1)ISA网卡驱动程序的探测过程(函数netcard_probe1()中),从起始端口读取3字节网卡硬件地址进行校验:
if ( inb(ioaddr+0) != SA_ADDR0 ¦ ¦ inb(ioaddr+1) != SA_ADDR1 ¦ ¦ inb(ioaddr+2) != SA_ADDR3 )
{ return -ENODEV; }
...
for ( i=0; i <6; i++ )
printk("%2.2x" , dev->dev_addr
= inb(ioaddr+i));
(2)在接收函数中(函数net_rx()),出现:
int status = inw(ioaddr);
int pkt_len = inw(ioaddr);
分别表示读取帧状态码和帧长度,是从同一个端口读到的一个包中的两个不同数据
那么,为什么(1)中三个字节的硬件地址是在三个连续端口中读出来的(inb中的"+0"、"+1"、"+2"),而(2)中帧状态码和长度却是同一个端口呢?
而且如果对同一端口的连续读取会得到不同的数据,在(1)中,读取地址校验完后的打印过程(inb(ioaddr+i))还能确定是校验时读取的硬件地址数据么?
请高手指教,谢谢!
zltjiangshi
版主
注册用户
UID 160339
精华 0
积分 79(
积分有什么用?
)
帖子 503
阅读权限 100
注册 2006-6-8
状态
在线
#2
使用道具
发表于 2008-4-16 13:06
资料
个人空间
短消息
加为好友
我想,这个ioaddr是局部变量吧,两个函数中的局部变量应该是风马牛不相及的吧。
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。
njngypp
新生入学
UID 204160
精华 0
积分 15(
积分有什么用?
)
帖子 5
阅读权限 10
注册 2007-7-20
状态 离线
#3
使用道具
发表于 2008-4-16 14:11
资料
个人空间
短消息
加为好友
回复 #2 zltjiangshi 的帖子
两个函数中的ioaddr都是指的网卡的IO基地址,我对IO_BASE理解不深,看到资料上说“网卡mac地址存于开始的六个寄存器中”,不知是否与基地址相关。
不容错过的IBM 集群技术资源汇总
zltjiangshi
版主
注册用户
UID 160339
精华 0
积分 79(
积分有什么用?
)
帖子 503
阅读权限 100
注册 2006-6-8
状态
在线
#4
使用道具
发表于 2008-4-16 19:27
资料
个人空间
短消息
加为好友
我还是觉得两个函数中的ioaddr不是一个地址,要不你把它们的声明处贴出来看看。
如果函数不长,把整个函数贴出来也可以。
1,本人乃Linux伊甸园“Linux内核学习”,“红旗等发行版”版主,请大家捧场。
2,红旗Linux在设备驱动,系统设置,中文美化,易用性方面做得非常好,建议大家使用。
3,本人是红旗Linux的粉丝,不是枪手。
不容错过的IBM 集群技术资源汇总
linkstack
新生入学
UID 201661
精华 0
积分 14(
积分有什么用?
)
帖子 28
阅读权限 10
注册 2007-7-6
来自 山东潍坊
状态 离线
#5
使用道具
发表于 2008-4-18 13:24
资料
个人空间
主页
短消息
加为好友
ioaddr这个port一直都是保存网卡硬件地址吗?
我没看过网卡驱动,只看过扫描仪驱动,所以感到很好奇,一般是向control port发送指令,然后从data port或status port中读取数据.我认为ioaddr是一个data port或status port,在接收函数中应该已经向control port发送指令了,然后从ioaddr中读取数据
我对网卡驱动知道的很少,无知者无畏大概说的就是我了
njngypp
新生入学
UID 204160
精华 0
积分 15(
积分有什么用?
)
帖子 5
阅读权限 10
注册 2007-7-20
状态 离线
#6
使用道具
发表于 2008-4-23 22:36
资料
个人空间
短消息
加为好友
受教了,是我看代码看的太死了,谢谢!
不容错过的IBM 集群技术资源汇总
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-5-18 09:38
Powered by
Discuz!
5.5.0
© 2001-2007
Comsenz Inc.
Processed in 0.066172 second(s), 5 queries
TOP
清除 Cookies
-
联系我们
-
Linux伊甸园
-
Archiver
-
WAP
多串口卡,串口服务器,终端服务器,KVM切换器
best dvd copy software