- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux网络设备驱动程序介绍
07205040203,
(安徽建筑工业学院 电子与信息工程学院 通信工程2班)
摘 要: Linux网络设备驱动程序是Linux网络应用的重要组成部分。本文详细分析了Linux内核中网络设备驱动程序的运行机理,并着重介绍了实现Linux网络驱动程序的关键过程,最后给出了一种实现模式和具体实例。
关键词: Linux操作系统;网络设备驱动程序;内核;模块
Linux network device driver description
07205040203,
(07 Communication Engineering 2 Course,,Electronic and Information Engineering,Anhui University of Architecture,230031, China)
Abstract: Linux Network Linux network device driver is an important part of the application. This paper analyzes the Linux kernel network device driver running mechanism, with an emphasis on Linux network drivers to achieve the key processes, and finally an implementation model and given specific examples.
Key words: Linux operating system; network device driver; kernel; module
0 引言
1驱动程序设计原理
1.1体系结构
1.2初始化
1.3数据包的发送与接收
2实现模式
3 LINUX系统下的设备驱动程序
3.1入口点结构
3.2入口点位置
3.3 LINUX系统下的具体实现
4应用实例
4.1模块加载和卸载
4.2网络接口初始化
4.3网络接口设备的打开和关闭
4.4数据包的接收和发送
5 结束语
0引言
Linux网络设备驱动程序是Linux网络应用中一个重要的组成部分,分析其运行机理,对于设计Linux网络应用程序很有帮助。因为有时需要我们在网络驱动程序这一层次做应用开发,例如,设计Linux防火墙和网络入侵检测系统时,可以在网络驱动程序的基础上拦截网络数据包,继而对其进行分析。本文将就Linux内核中的网络设备驱动程序部分进行讨论,并介绍实现Linux网络设备驱动程序的方法。
1驱动程序设计原理
1. 1体系结构
Linux网络驱动程序的体系结构可以划分为四层(参见图1),从上到下分别为网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层,以及网络设备和网络媒介层。我们在设计网络驱动程序时,最主要的工作就是完成设备驱动功能层,使其满足我们所需的功能。在Linux中所有网络设备都抽象为一个接口,这个接口提供了对所有网络设备的操作集合。由数据结构 struct device来表示网络设备在内核中的运行情况,即网络设备接口。它既包括纯软件网络设备接口,如环路(Loopback),也包括硬件网络设备接口,如以太网卡。而由以dev_base为头指针的设备链表来集体管理所有网络设备,该设备链表中的每个元素代表一个网络设备接口。数据结构device中有很多供系统访问和协议层调用的设备方法,包括供设备初始化和系统注册用的init函数,打开和关闭网络设备的open和stop函数,处理数据包发送的hard_start_xmit函数,以及中断处理函数等。有关device数据结构(在内核中就是net_device)的详细内容,可以参看/linux/include/linux/netdevice.h。
1.2 初始化
网络设备的初始化主要由device数据结构中的init函数指针所指向的初始化函数来完成,当内核启动或加载网络驱动模块的时候,就会调用这个初始化函数。在初始化函数中通过检测物理设备的硬件特征来侦测网络物理设备是否存在,然后再对设备进行资源配置,接下来构造设备的device数据结构,并用检测到的数据对device中的变量初始化,最后向Linux内核注册该设备并申请内存空间。
1.3数据包的发送与接收
数据包的发送和接收是实现Linux网络驱动程序中两个最关键的过程,对这两个过程处理的好坏将直接影响到驱动程序的整体运行质量。
在网络设备驱动加载时,通过device域中的init函数指针调用网络设备的初始化函数对设备进行初始化,如果操作成功再通过device域中的open
文档评论(0)