易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux内核学习笔记之网卡驱动的详细分析

学习应该是一个先把问题简单化,在把问题复杂化的过程。一开始就着手处理复杂的问题,难免让 人有心惊胆颤,捉襟见肘的感觉。读Linux网卡驱动也是一样。那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏便是理所当然的了。不要担心,事情 总有解决的办法,先把一些我们管不着的代码切割出去,留下必须的部分,把框架掌握了,哪其他的事情自然就水到渠成了,这是笔者的心得。
一般在使用的Linux网卡驱动代码动辄3000行左右,这个代码量以及它所表达出来的知识量无疑是庞大的,我们有没有办法缩短一下这个代码量,使我们的 学习变的简单些呢,经过笔者的不懈努力,在仍然能够使网络设备正常工作的前提下,把它缩减到了600多行,我们把暂时还用不上的功能先割出去。这样一来, 事情就简单多了,真的就剩下一个框架了。下面我们就来剖析这个可以执行的框架。
限于篇幅,以下分析用到的所有涉及到内核中的函数代码,我都不予列出,但给出在哪个具体文件中,请读者自行查阅。
首先,我们来看看设备的初始化。当我们正确编译完我们的程序后,我们就需要把生成的目标文件加载到内核中去,我们会先ifconfig eth0 down和rmmod 8139too来卸载正在使用的网卡驱动,然后insmod 8139too.o把我们的驱动加载进去(其中8139too.o是我们编译生成的目标文件)。就像C程序有主函数main()一样,模块也有第一个执行 的函数,即module_init(rtl8139_init_module);在我们的程序中,rtl8139_init_module()在 insmod之后首先执行,它的代码如下:
static int __init rtl8139_init_module (void)
{
return pci_module_init (&rtl8139_pci_driver);
}
它直接调用了pci_module_init(),这个函数代码在Linux/drivers/net/eepro100.c中,并且把 rtl8139_pci_driver(这个结构是在我们的驱动代码里定义的,它是驱动程序和PCI设备联系的纽带)的地址作为参数传给了它。 rtl8139_pci_driver定义如下:
static struct pci_driver rtl8139_pci_driver = {
name: MODNAME,
id_table: rtl8139_pci_tbl,
probe: rtl8139_init_one,
remove: rtl8139_remove_one,
};
pci_module_init()在驱动代码里没有定义,你一定想到了,它是Linux内核提供给模块是一个标准接口,那么这个接口都干了些什么,笔者 跟踪了这个函数。里面调用了pci_register_driver(),这个函数代码在Linux/drivers/pci/pci.c中, pci_register_driver做了三件事情。
①是把带过来的参数rtl


相关文档:

linux pppoe

手头有个ep9315的板,今天突然想起跑一下adsl上网。晚上回来就开始搞。
从10点到现在,终于能够跑起来。
给大家借鉴一下。
1.编译内核,把ppp的那些选项选上。 (我用2.6.8.1的kernel,cirrus 的patch)
2.libpcap-0.9.1 这个包是pppd需要的。
./configure CC=arm-linux-gcc CFLAGS=-msoft-float --target=arm-linu ......

Linux 无线网络技术: WLAN

当今,不考虑 Linux 和无线网络技术的话,就无法谈到计算机和网络。在这篇文章中,Sreekrishnan Venkateswaran 用
Linux 观点阐释了通过 WLAN、Bluetooth、GPRS、GSM 以及 IrDA
实现无线联网。他使用各种不同的无线设备和相应的内核层,以及用户空间工具来示范它们在 Linux 下如何工作。
无线技术,例如
WLAN (Wireles ......

linux find 命令实例

·find  path  -option  [  -print ]  [ -exec  -ok  command ]  {} \;
#-print 将查找到的文件输出到标准输出
#-exec  command  {} \;     -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询 ......

fedora/linux yum源详细设置(强烈推荐)

经过艰苦的奋斗,终于搞定了fedora系统从安装到3D特效(本人安装的是fedora
11),为了方便后来的linuxer,特留下本人的全过程以供参考。以下步骤有的来自于google搜索,有部分来自于嘉佑中文博客
(http://www.my-guides.net/en/content/view/164/26/),并感谢各方前辈的笔迹。
1.添加rpm fusion源
rpm -ivh
http://do ......

linux 硬链接 软链接

linux中关于链接类型分为硬链接和软链接
  硬链接指令 ln  文件  链接名称
  软链接指令 ln -s 文件  链接名称
共同点:
  都可以通过链接名称去访问被链接的文件
不同点:
  硬链接会产生一个和源文件相同的文件 不论大小和属性
  删除源文件不会对链接文件产生影响
&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号