标准PCI设备都有一个配置寄存器,用来存储各种参数;

 /* pci设备配置寄存器 */
struct pci_device_id {
/* 厂商id,设备id */
__u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/
/* 子系统厂商id,子系统设备id */
__u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
/* 类,类掩码,使驱动程序可以指定支持某一种pci设备 */
__u32 class, class_mask; /* (class,subclass,prog-if) triplet */
/* 保存于设备相关的私有信息 */
kernel_ulong_t driver_data; /* Data private to the driver */
};

以e100为例,其支持多种设备,不同设备的pci_device_id初始化后存放在e100_id_table[]数组中;

e100_driver操作中的id_table字段会引用该数组;

 /* e100的pci设备信息结构列表 */
#define INTEL_8255X_ETHERNET_DEVICE(device_id, ich) {\
PCI_VENDOR_ID_INTEL, device_id, PCI_ANY_ID, PCI_ANY_ID, \
PCI_CLASS_NETWORK_ETHERNET << , 0xFFFF00, ich }
static const struct pci_device_id e100_id_table[] = {
INTEL_8255X_ETHERNET_DEVICE(0x1029, ),
INTEL_8255X_ETHERNET_DEVICE(0x1030, ),
INTEL_8255X_ETHERNET_DEVICE(0x1031, ),
INTEL_8255X_ETHERNET_DEVICE(0x1032, ),
INTEL_8255X_ETHERNET_DEVICE(0x1033, ),
INTEL_8255X_ETHERNET_DEVICE(0x1034, ),
INTEL_8255X_ETHERNET_DEVICE(0x1038, ),
INTEL_8255X_ETHERNET_DEVICE(0x1039, ),
INTEL_8255X_ETHERNET_DEVICE(0x103A, ),
INTEL_8255X_ETHERNET_DEVICE(0x103B, ),
INTEL_8255X_ETHERNET_DEVICE(0x103C, ),
INTEL_8255X_ETHERNET_DEVICE(0x103D, ),
INTEL_8255X_ETHERNET_DEVICE(0x103E, ),
INTEL_8255X_ETHERNET_DEVICE(0x1050, ),
INTEL_8255X_ETHERNET_DEVICE(0x1051, ),
INTEL_8255X_ETHERNET_DEVICE(0x1052, ),
INTEL_8255X_ETHERNET_DEVICE(0x1053, ),
INTEL_8255X_ETHERNET_DEVICE(0x1054, ),
INTEL_8255X_ETHERNET_DEVICE(0x1055, ),
INTEL_8255X_ETHERNET_DEVICE(0x1056, ),
INTEL_8255X_ETHERNET_DEVICE(0x1057, ),
INTEL_8255X_ETHERNET_DEVICE(0x1059, ),
INTEL_8255X_ETHERNET_DEVICE(0x1064, ),
INTEL_8255X_ETHERNET_DEVICE(0x1065, ),
INTEL_8255X_ETHERNET_DEVICE(0x1066, ),
INTEL_8255X_ETHERNET_DEVICE(0x1067, ),
INTEL_8255X_ETHERNET_DEVICE(0x1068, ),
INTEL_8255X_ETHERNET_DEVICE(0x1069, ),
INTEL_8255X_ETHERNET_DEVICE(0x106A, ),
INTEL_8255X_ETHERNET_DEVICE(0x106B, ),
INTEL_8255X_ETHERNET_DEVICE(0x1091, ),
INTEL_8255X_ETHERNET_DEVICE(0x1092, ),
INTEL_8255X_ETHERNET_DEVICE(0x1093, ),
INTEL_8255X_ETHERNET_DEVICE(0x1094, ),
INTEL_8255X_ETHERNET_DEVICE(0x1095, ),
INTEL_8255X_ETHERNET_DEVICE(0x10fe, ),
INTEL_8255X_ETHERNET_DEVICE(0x1209, ),
INTEL_8255X_ETHERNET_DEVICE(0x1229, ),
INTEL_8255X_ETHERNET_DEVICE(0x2449, ),
INTEL_8255X_ETHERNET_DEVICE(0x2459, ),
INTEL_8255X_ETHERNET_DEVICE(0x245D, ),
INTEL_8255X_ETHERNET_DEVICE(0x27DC, ),
{ , }
};
MODULE_DEVICE_TABLE(pci, e100_id_table);

网络设备之pci_device_id的更多相关文章

  1. OVS 中的各种网络设备 - 每天5分钟玩转 OpenStack(128)

    上一节我们启用了 Open vSwitch,本节将查看当前的网络状态并介绍 Open vSwitch 涉及的各种网络设备 初始网络状态 查看一下当前的网络状态. 控制节点 ifconfig 显示控制节 ...

  2. linux网络设备驱动程序

    4.linux网络设备驱动程序体系结构 -------------------------------------- | 数据包发送 | 数据包接收 | ----->网络协议接口层 | dev_ ...

  3. 谢欣伦 - OpenDev原创教程 - 网络设备查找类CxNetworkHostFind & CxNetworkAdapterFind

    这是一个精练的网络设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxNetworkHostFind的使用如下: void ...

  4. 从veth看虚拟网络设备的qdisc

    背景 前段时间在测试docker的网络性能的时候,发现了一个veth的性能问题,后来给docker官方提交了一个PR,参考set tx_queuelen to 0 when create veth d ...

  5. 用OSSIM轻松分析网络设备日志

    用OSSIM轻松分析网络设备日志 基于插件的日志收集与处理模式,使得用户可以轻松的利用OSSIM来分析异构网络环境下的各种网络设备日志,下面展示一些硬件设备日志的实例,我们在RAW LOG界面里,搜索 ...

  6. xamarin误删vEthernet(internal Ethernet Port Windows Phone Emulator) 网络设备的处理。

    昨天一不小心误删了xamarin 开发环境下的虚拟设备网络设备.名称为:vEthernet(internal Ethernet Port Windows Phone Emulator).导致原来能正确 ...

  7. CCNA网络工程师学习进程(4)网络设备的基本配置和详细介绍

        网络设备(路由器.交换机和防火墙等)与计算机一样需要操作系统.网络设备采用专用的操作系统,统称为IOS(Internetwork Operating System,网络操作系统).     ( ...

  8. CCNA网络工程师学习进程(2)基本的网络设备

      在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...

  9. Ansible用于网络设备管理 part 0 安装和登录网络设备

    真实在是累了,但是又怕第二天早上又忘掉,在这先大概写写. 安装: http://www.tecmint.com/install-and-configure-ansible-automation-too ...

随机推荐

  1. Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)

    一.基础知识简介: 1.包的命名介绍: 包的命名没有规则,但是建议遵守包的命名约定:包的命名与包的版本相关,包的名称前面几个字符通常表示作者或公司名,也可以是控件的一个描述词,后面紧跟的Std表示运行 ...

  2. 【Python】Python time mktime()方法

    描述 Python time mktime() 函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数. 如果输入的值不 ...

  3. 使用mac电脑,对Github客户端的简单操作1----开源项目

    工作之余自己也会一写一些小的程序项目,由于一直没时间“折腾”开源,之前写博客都是直接粘代码片段,今天看别人写技术博客大都会放出项目Github地址,突然感觉自己有点点out and low,作为一个励 ...

  4. AtCoder Regular Contest 103 题解

    C-/\/\/\ #include<algorithm> #include<iostream> #include<cstdlib> #include<ioma ...

  5. BZOJ3140:[HNOI2013]消毒——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3140 https://www.luogu.org/problemnew/show/P3231 最近在 ...

  6. java 实现多个接口 方法重名的解决办法——内部类

    package com.kk.innerClass; /** * 通过内部类实现接口 * 解决多个接口中方法重名问题 * */interface Machine { void run();} clas ...

  7. 【贪心/DP/单调队列】【CF1029B】Creating the Contest

    Description 给你一个单调不下降的长度为n的序列,请你找出一个最长的子序列,满足找出的子序列中,\(A_i<=A_{i-1}~\times~2\),其中i为下标,A为找出的子序列.对于 ...

  8. 怎样去面试JavaScript开发者

    面试 Javascript 工程师难吗?Javascript 工程师的水平参差不齐,如何评定他们技术水平的高低?如何确定 Javascript 工程师适合承担哪方面的任务?我在腾讯时的面试经验是,通过 ...

  9. caffe中使用crop_size剪裁训练图片

    layer { name: "data" type: "Data" top: "data" top: "label" i ...

  10. STL之六:map/multimap用法详解

    转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap 使用map/multimap之前要加入头文件# ...