platform总线、设备与驱动
在linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。
一个现实的linux设备和驱动通常都需要挂接在一种总线上...
编译命令和错误显示如下 gcc -c snull.c -DMODUOLE -D__KERNEL__ -I/usr/src/linux-2.4.20-8/include -g -o snull.o snull.c:21:31: linux/moduleparam.h: No such file or directory In file included from snull.c:40: /usr/src/linux-2.4.20-8/include/asm/checksum.h: In function `csum_and_copy_to_user': /usr/src/linux-2.4.20-8/include/asm/checksum.h:186: `VERIFY_WRITE' undeclared (first use in this function) /u...
by blowingwind - 内核/嵌入技术 - 2006-03-31 23:43:02 阅读(2490) 回复(10)
编译命令和错误显示如下 gcc -c snull.c -DMODUOLE -D__KERNEL__ -I/usr/src/linux-2.4.20-8/include -g -o snull.o snull.c:21:31: linux/moduleparam.h: No such file or directory In file included from snull.c:40: /usr/src/linux-2.4.20-8/include/asm/checksum.h: In function `csum_and_copy_to_user': /usr/src/linux-2.4.20-8/include/asm/checksum.h:186: `VERIFY_WRITE' undeclared (first use in this function) /u...
网络设备,即网络接口,在操作系统核心级上处理包的发送和接收。与块设备一样,网络接口也在特定的数据结构之中注册自己,以利于在跟外界进行包交换的时候被调用;但是它不象块设备一样存在于文件系统当中。二者最主要的区别在于:块设备是收到要求,才向内核发送一个块缓冲区的内容;网络接口是主动向内核推入从接口进入的包。linux核心的网络子系统,在设计的时候是完全独立于协议的,对网络协议(如IP对IPX或其它)和硬件协议...
设备驱动程序实践6(snull网络设备驱动) 转自:http://blog.chinaunix.net/u/15071/showart.php?id=93038 最近学习了网络设备驱动的写法 ,并实践了ldd2的snull例子 ,这个例子最大的困难是,如果你不把这个例子调通,代码看懂 ,你就不明白到底这个例子是做什么的怎么用 。晕,刚好倒过来了 实际上ldd上说的太复杂 ,不太让人好懂,就是ldd的作者为了让俺们调试方便,让我们能够在一台机器上进行调试人为地搞了那么多乱七八...
在http://www.cs.fsu.edu/找的snull.c想做一个虚拟网卡。然后做成内核模块的方式。内核版本是2.6.27.5 这个是源码: snull.c[code] #include <linux/module.h> #include <linux/init.h> #include <linux/moduleparam.h> #include <linux/sched.h> #include <linux/kernel.h> /* printk() */ #include <linux/slab.h> /* kmalloc() */ #include <linux/errno.h> /* error codes */ #include <linux/types.h> /* size_t */ #inclu...
最近学习了网络设备驱动的写法 ,并实践了ldd2的snull例子 ,这个例子最大的困难是,如果你不把这个例子调通,代码看懂 ,你就不明白到底这个例子是做什么的怎么用 。晕,刚好倒过来了 实际上ldd上说的太复杂 ,不太让人好懂 ,就是ldd的作者为了让俺们调试方便,让我们能够在一台机器上进行调试人为地搞了那么多乱七八糟的东西 ,snull发出的包在发出前目的地址被修改了 ,就这么点事情 ,比如我们ping 192.168.0.123 ,硬件收...
书上写了测试方法: ifconfig sn0 local0 ping -c 2 remote0 预期是能ping 通 但是每次执行ifconfig sn0 local0 时候虚拟机就死机! 来大神,牛人,help~~
/* * Transmit a packet (low level interface) */ static void snull_hw_tx(char *buf, int len, struct net_device *dev) { /* * This function deals with hw details. This interface loops * back the packet to the other snull interface (if any). * In other words, this function implements the snull behaviour, * while all other procedures are rather device-independent */ struct iphdr *ih; str...
怎么给LDD3的snull网络驱动写一个测试程序??? 怎么测试网络驱动是否正确?? 能否像字符设备那样定义了fileoperation,然后可以写相关的上层设备来测试这个字符设备驱动那样。 对于USB设备和网络设备也可以这样么???
platform总线、设备与驱动
在linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。
一个现实的linux设备和驱动通常都需要挂接在一种总线上...
linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得linux的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open()、close()、read()、write() 等。 linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个数据缓冲区的形式进行。字符设备的驱动相对比较简单。 下面...