12.8. 快速參考

2018-02-24 15:50 更新

12.8.?快速參考

本節(jié)總結(jié)在本章中介紹的符號:

#include <linux/pci.h>

包含 PCI 寄存器的符號名和幾個供應商和設(shè)備 ID 值的頭文件.

struct pci_dev;

表示內(nèi)核中一個 PCI 設(shè)備的結(jié)構(gòu).

struct pci_driver;

代表一個 PCI 驅(qū)動的結(jié)構(gòu). 所有的 PCI 驅(qū)動必須定義這個.

struct pci_device_id;

描述這個驅(qū)動支持的 PCI 設(shè)備類型的結(jié)構(gòu).

int pci_register_driver(struct pci_driver *drv);
int pci_module_init(struct pci_driver *drv);
void pci_unregister_driver(struct pci_driver *drv);

從內(nèi)核注冊或注銷一個 PCI 驅(qū)動的函數(shù).

struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device, struct pci_dev *from);
struct pci_dev *pci_find_device_reverse(unsigned int vendor, unsigned int device, const struct pci_dev *from);
struct pci_dev *pci_find_subsys (unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, const struct pci_dev *from);
struct pci_dev *pci_find_class(unsigned int class, struct pci_dev *from);

在設(shè)備列表中搜尋帶有一個特定簽名的設(shè)備, 或者屬于一個特定類的. 返回值是 NULL 如果沒找到. from 用來繼續(xù)一個搜索; 在你第一次調(diào)用任一個函數(shù)時它必須是 NULL, 并且它必須指向剛剛找到的設(shè)備如果你尋找更多的設(shè)備. 這些函數(shù)不推薦使用, 用 pciget 變體來代替.

struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from);
struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from);
struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);

在設(shè)備列表中搜索一個特定簽名的設(shè)備, 或者屬于一個特定類. 返回值是 NULL 如果沒找到. from 用來繼續(xù)一個搜索; 在你第一次調(diào)用任一個函數(shù)時它必須是 NULL, 并且它必須指向剛剛找到的設(shè)備如果你尋找更多的設(shè)備. 返回的結(jié)構(gòu)使它的引用計數(shù)遞增, 并且在調(diào)用者完成它, 函數(shù) pci_dev_put 必須被調(diào)用.

int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val);
int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);
int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);
int pci_write_config_byte (struct pci_dev *dev, int where, u8 *val);
int pci_write_config_word (struct pci_dev *dev, int where, u16 *val);
int pci_write_config_dword (struct pci_dev *dev, int where, u32 *val);

讀或?qū)?PCI 配置寄存器的函數(shù). 盡管 Linux 內(nèi)核負責字節(jié)序, 程序員必須小心字節(jié)序當從單個字節(jié)組合多字節(jié)值時. PCI 總線是小端.

int pci_enable_device(struct pci_dev *dev);

使能一個 PCI 設(shè)備.

unsigned long pci_resource_start(struct pci_dev *dev, int bar);
unsigned long pci_resource_end(struct pci_dev *dev, int bar);
unsigned long pci_resource_flags(struct pci_dev *dev, int bar);

處理 PCI 設(shè)備資源的函數(shù).

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號