PCI层和网络接口卡
一、主要数据结构
- pci_driver
struct pci_driver {
struct list_head node;
const char *name;
const struct pci_device_id *id_table;
int (*probe) (struct pci_dev *dev, const struct pci_device_id *id);
void (*remove) (struct pci_dev *dev);
int (*suspend) (struct pci_dev *dev, pm_message_t state);
int (*suspend_late) (struct pci_dev *dev, pm_message_t state);
int (*resume_early) (struct pci_dev *dev);
int (*resume) (struct pci_dev *dev);
void (*shutdown) (struct pci_dev *dev);
struct pci_error_handlers *err_handler;
struct device_driver driver;
struct pci_dynids dynids;
};
- int (*suspend) (struct pci_dev *dev, pm_message_t state);
主要停止设备出口队列,是的该设备无法再传输 - int (*resume) (struct pci_dev *dev);
重启出口队列,是的该设备得以再次传输
- pci_device_id
struct pci_device_id {
__u32 vendor, device;
__u32 subvendor, subdevice;
__u32 class, class_mask;
kernel_ulong_t driver_data;
};