📄 pci.c.txt
字号:
any problem, send mail to lysindybear@sina.com.cn
相关文件
/include/pci.h
/drivers/pcmcia/cardbus.c
**************************基本数据结构***********************************
LIST_HEAD(pci_root_buses);
LIST_HEAD(pci_devices); //所有监测到的pci设备都连接到这个结构后面
*************************************************************************
**************************pci设备初始化函数(老式)****************************
(1)pci_find_device(unsigned int vendor, unsigned int device, const struct pci_dev from)
调用pci_find_subsys,对pci上的所有的设备进行遍历来找到所需的设备
寻找pci总线上的设备,如果from是空的话,就寻找一个新的设备,
(2)pci_find_subsys(unsigned int vendor, unsigned int device,
unsigned int ss_vendor, unsigned int ss_device,
const struct pci_dev *from)
struct list_head *n = from ? from->global_list.next : pci_devices.next;
如果from是空的话,就从全局变量pci_devices中来搜索,否则从给定的from后面搜索
……
找到的话,就返回一个pci_dev的结构,否则返回null
(2)pci_enable_device(struct pci_dev *dev) //初始化pci设备
pci_set_power_state(dev, 0); //设置电源管理功能
pcibios_enable_device(dev) //在arch/i386/kernel/pci-i386.c中
*****************************************************************************
**************************pci设备dma方式函数*********************************
(1)pci_set_dma_mask(struct pci_dev *dev, u64 mask) //设置dma的寻址范围。
dev->dma_mask = mask; //记下来mask
*****************************************************************************
****************************pci设备对外的使用********************************
这个函数主要提供将检测到的pci设备加入到系统变量中的作用
pci_insert_device(struct pci_dev *dev, struct pci_bus *bus)
list_add_tail(&dev->bus_list, &bus->devices); //加入到相对应的总线上
list_add_tail(&dev->global_list, &pci_devices); //加入到pci_devices全局变量上
*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -