linux添加硬盘配置内核pci,linux中PCI子系统补充

很多网络接口卡都是PCI设备,必须与Linux PCI子系统协同工作。新的PCI设备是PCI Express设备.PCI设备都有只读的配置空间,可以通过lspci命令来读取。

#lspci -xxx可以查看PCI配置空间内容的十六进制表示

#lspci -xxxx可以查看扩展PCI配置空间内容的十六进制表示

当然linux PCI API提供了3个读取配置空间的方法,位于文件

drivers/pci/access.c中:

pci_read_config_byte, pci_read_config_word, pci_read_config_dword

还有写配置的方法

pci_write_config_byte, pci_write _config_word, pci_write _config_dword

在Linux PCI子系统中,PCI设备用pci_device_id对象表示,位于文件

include/linux/mod_devicetable.h:

struct pci_device_id {

__u32 vendor, device;           /* Vendor and device ID or PCI_ANY_ID*/

__u32 subvendor, subdevice;     /* Subsystem ID's or PCI_ANY_ID */

__u32 class, class_mask;        /* (class,subclass,prog-if) triplet */

kernel_ulong_t driver_data;     /* Data private to the driver */

};

每个pci设备驱动程序都声明了一个pci_drier对象,位于文件include/linux/pci.h

struct pci_driver {

struct list_head node;

const char *name;

const struct pci_device_id *id_table;   /* must be non-NULL for probe to be called */

int  (*probe)  (struct pci_dev *dev, const struct pci_device_id *id);   /* New device inserted */

void (*remove) (struct pci_dev *dev);   /* Device removed (NULL if not a hot-plug capable driver) */

int  (*suspend) (struct pci_dev *dev, pm_message_t state);      /* Device suspended */

int  (*suspend_late) (struct pci_dev *dev, pm_message_t state);

int  (*resume_early) (struct pci_dev *dev);

int  (*resume) (struct pci_dev *dev);                   /* Device woken up */

void (*shutdown) (struct pci_dev *dev);

int (*sriov_configure) (struct pci_dev *dev, int num_vfs); /* PF pdev */

const struct pci_error_handlers *err_handler;

const struct attribute_group **groups;

struct device_driver    driver;

struct pci_dynids dynids;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值