Linux网卡驱动程序编写.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux操作系统网络驱动程序编写 %A 一.Linux系统设备驱动程序概述 u5 1.1 Linux设备驱动程序分类 %Vp} 1.2 编写驱动程序的一些基本概念 *I 二.Linux系统网络设备驱动程序 [`]K 2.1 网络驱动程序的结构 H 2.2 网络驱动程序的基本方法 U?+ 2.3 网络驱动程序中用到的数据结构 IKo 2.4 常用的系统支持 v[ZEeu 三.编写Linux网络驱动程序中可能遇到的问题 /oY 3.1 中断共享 l@FZkg 3.2 硬件发送忙时的处理 pZw 3.3 流量控制(flow control) $:p. 3.4 调试 W!07 四.进一步的阅读 ]G_0Q 五.杂项 Z!h ?OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  )e ?OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  tej$ ?OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  B12.2 ?OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  cae 一.Linux系统设备驱动程序概述 c 1.1 Linux设备驱动程序分类 eiD)|w Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。 ASy Linux系统的设备分为字符设备(char device),块设备(block device)和网络设备(network device)三种。字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有这个要求。典型的字符设备包括鼠标,键盘,串行口等。块设备主要包括硬盘软盘设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上。 0}}} 网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD unix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。 (r) ?OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  ^Ctk 1.2 编写驱动程序的一些基本概念 XlA! 无论是什么操作系统的驱动程序,都有一些通用的概念。操作系统提供给驱动程序的支持也大致相同。下面简单介绍一下网络设备驱动程序的一些基本要求。 , 1.2.1 发送和接收 Ry 这是一个网络设备最基本的功能。一块网卡所做的无非就是收发工作。所以驱动程序里要告诉系统你的发送函数在哪里,系统在有数据要发送时就会调用你的发 送程序。还有驱动程序由于是直接操纵硬件的,所以网络硬件有数据收到最先能得到这个数据的也就是驱动程序,它负责把这些原始数据进行必要的处理然后送给系统。这里,操作系统必须要提供两个机制,一个是找到驱动程序的发送函数,一个是驱动程序把收到的数据送给系统。 -2T 1.2.2 中断 d#`T 中断在现代计算机结构中有重要的地位。操作系统必须提供驱动程序响应中断的能力。一般是把一个中断处理程序注册到系统中去。操作系统在硬件中断发生后 调用驱动程序的处理程序。Linux支持中断的共享,即多个设备共享一个中断。 U- =G 1.2.3 时钟 在实现驱动程序时,很多地方会用到时钟。如某些协议里的超时处理,没有中断机制的硬件的轮询等。操作系统应为驱动程序提供定时机制。一般是在预定的时 间过了以后回调注册的时钟函数。在网络驱动程序中,如果硬件没有中断功能,定时器可以提供轮询(poll)方式对硬件进行存取。或者是实现某些协议时需要的超时重传等。 ]_-Ggs 二.Linux系统网络设备驱动程序 -zwM 2.1 网络驱动程序的结构 V6 所有的Linux网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(device 结构),它内部有自己的数据和方法。每一个设备的方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自身的数据(类似面向对象程序设计时的this引用)。 .^ 一个网络设备最基本的方法有初始化、发送和接收。 nX|?N ------------------- --------------------- -:J |deliver packets | |receive packets queue| s9b |(dev_queue_xmit()) | |them

文档评论(0)

bhl0572 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档