Linux PCI驱动模型
PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起。
PCI将计算机系统中的总线子系统与存储子系统完全地分开,CPU通过一块称为PCI桥(PCI-Bridge)的设备来完成同总线子系统的交互,尽管目前PCI设备大多采用32位数据总线,但PCI规范中已经给出了64位的扩展实现。
(1)关键数据结构
PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用。内核在启动时负责对所有PCI设备进行初始化,配置好所有的PCI设备,包括中断号以及I/O基址,并在文件/proc/pci中列出所有找到的PCI设备,以及这些设备的参数和属性。
A,pci_driver:这个数据结构在文件include/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( )。
B,pci_dev:这个数据结构也在文件include/linux/pci.h里,它详细描述了一个PCI设备几乎所有的硬件信息,包括厂商ID、设备ID、各种资源等。
(2) 基本框架
在用模块方式实现PCI设备驱动程序时,通常至少要实现以下几个部分:初始化设备模块、设备打开模块、数据读写和控制模块、中断处理模块、设备释放模块、设备卸载模块。下面给出一个典型的PCI设备驱动程序的基本框架(只列出主要引用)。
/* 指明该驱动程序适用于哪一些PCI设备 */
static struct pci_device_id demo_pci_tbl [] __initdata = {
{PCI_VENDOR_ID_DEMO, PCI_DEVICE_ID_DEMO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEMO},
{0,}
};
/* 对特定PCI
相关文档:
总览
用iptables -ADC 来指定链的规
则
,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......
1. Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern
space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样
1. Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当 ......
很多新手,在安装linux系统时常常会出现的问题:引导程序装错,或者不小心删除linux分区,把mbr删掉了。或者装完linux后又重装windows,把mbr覆盖了,以致无法启动系统,出现"Grub>"的情况。
如果将Grub或者Lilo安装在Mbr(主引导扇区),重新安装Windows会造成Grub或者Lilo的丢失。如果把它们安装在根分区(root分区), ......
tar zxvf samba-3.0.21.tar.gz
shell> cd samba-3.0.21/source
shell> ./configure
shell> make
shell> make install
shell> cp ../examples/smb.conf.default /usr/local/samba/lib/smb.conf & ......
转载于http://blog.csdn.net/CLX1314/archive/2006/03/30/643826.aspx
1。linux编程所用的一些工具
GCC 中文手册
http://www.nbfan.com/forum/dispbbs....&ID=1433&page=1
GNU make 指南
http://www.linuxsir.org/bbs/showthr...&threadid=40431
autoconf-2.57手册(英文)
http://www.gnu.org/software/a ......