免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: blowingwind
打印 上一主题 下一主题

linux设备驱动例子snull编译出错 求助 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-03-31 23:43 |只看该作者

俺目前面临的问题

最近所以学驱动是因为要开发一个协议栈 ,需要从网卡取数据 ,要修改网卡驱动  。学习驱动到现在 ,再对照uip的虚拟网卡驱动来看看 ,觉得其实都差不多 ,以前很多看不懂的地方,现在都基本豁然开朗了 ,真的是不做驱动 ,不做操作系统 ,很多东西就不会明白阿
  目前还存在着几个技术上的难题
  1,对于网卡来说收包是主动调用系统的netif_rx ,那么网卡到netif_rx后是不是就能主动的解决read的阻塞问题 ,也就是说 ,我们调用类似socket的函数read的时候如果碰到阻塞的情况 ,是操作系统在处理还是网卡驱动在处理 ???如果是这样的话那么我们read 是不是不用处理阻塞的情况而是把这个处理交给驱动来做,中断唤醒功能是谁来做呢??
   2。对于read 我看linux的源代码种采用将内核用户空间的数据拷贝到用户数据空间,那么如果我们要实现自己的tcpip协议栈的话,是不是也需要这么做呢??
如果这么做的话,那么我们的驱动不是已经拷贝过一次数据给netif_rx函数了么???
我为什么不能直接从驱动那里就直接拷贝到用户数据区呢???这么做难道不好么??为什么linux系统不这么做呢???
    3。驱动里面如果本身就包含有阻塞控制和中断唤醒 ,按照道理我们的read write就不用再处理诸塞的情况 可是对于网卡是没有read的 那我读数据的话 该怎么来做呢??是不是我理解错了 原本read 和write函数就是应该在驱动里面实现的???那我为什么在snull里面没有看到这些实现呢??
     4。 如果我要在网卡驱动里面将数据直接拷贝到用户内存空间的话 ,我该如何处理互斥 ,阻塞 ,流控呢??

     我的 e_mail是blowingwind@126.com 希望大家指点 。另外我的另外一个blog
是我的流水账blog,记录了关于uip协议栈的内容请大家有空也看看 ,不弄明白关于网卡驱动和操作系统网络的处理这块 ,uip就没有办法网下面走下去阿呵呵
http://blog.china-pub.com/blog.asp?name=blowingluo
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP