Linux网络驱动程序编写(二)
二.Linux系统网络设备驱动程序
2.1 网络驱动程序的结构
所有的Linux网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(device 结构),它内部有自己的数据和方法。每一个设备的方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自身的数据(类似面向对象程序设计时的this引用)。一个网络设备最基本的方法有初始化、发送和接收。
------------------- ---------------------
|deliver packets | |receive packets queue|
|(dev_queue_xmit()) | |them(netif_rx()) |
------------------- ---------------------
| | /
/ | |
-------------------------------------------------------
| methods and variables(initialize,open,close,hard_xmit,|
| interrupt handler,config,resources,status...) |
-------------------------------------------------------
| | /
/ | |
----------------- ----------------------
|send to hardware | |receivce from hardware|
----------------- ----------------------
| | /
/ | |
-----------------------------------------------------
| hardware media |
-----------------------------------------------------
初始化程序完成硬件的初始化、device中变量的初始化和系统资源的申请、发送程序是在驱动程序的上层协议层有数据要发送时自动调用的。一般驱动程序中不对发送数据进行缓存,而是直接使用硬件的发送功能把数据发送出去。接收数据一般是通过硬件中断来通知的。在中断处理程序里,把硬件帧信息填入一个skbuff结
相关文档:
Windows程序员如何转向Linux开发应用?
这是一封发到邮箱里面的邮件,感觉有点代表性,这里做个统一回答,一家之言哈,欢迎拍砖。
原文如下:
我从csdn学习大本营得到您的信息。不好意思打搅您。
我现在用c++在linux下开发大型应用程序。我想请教是否值得深入学习linux kernel。
我没有特别多的时间。另外我有多年Wind ......
linux软中断机制
中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格, ......
中文版书目
《Apache Cookbook中文版(第二版)》 New!
《Linux Networking Cookbook中文版》 New!
《Shell脚本学习指南》 New!
《卓有成效的程序员》 New!
《代码之美》 New!
《嵌入式硬件设计(第二版)》 New!
《LPI Linux认证权威指南(第二版)》 New!
《LINUX SERVER HACKS(卷二)》 New!
《BSD Hacks》 ......
一、bash shell的分类:
登录shell:用户登录linux主机时取得的shell.
非登录shell:用户登录linux主机后(取得了登录shell)由于需要启动执行的shell,如:用su切换用户后取得的shell;在登录shell中
&nb ......