标准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. Code Quality

    Code Quality https://www.sonarqube.org/ java https://www.sonarsource.com/products/codeanalyzers/sona ...

  2. 什么情况下需要检测预装Win8/8.1电脑内置激活密钥(即Win8/8.1 OEM key)?

    1.针对预装在品牌机中的Win8操作系统,因使用了某些软件或自己操作不当导致系统激活Key被替换而激活失效时,你需要找到内置在电脑中的OEM key,重新输入OEM key来激活系统. 2.针对预装W ...

  3. js 关键字 in 判断 一个属性或方法是否属于一个对象

    判断对象是否为数组/对象的元素/属性: 格式:(变量 in 对象)......注意,,, 当“对象”为数组时,“变量”指的是数组的“索引”: 当“对象”为对象是,“变量”指的是对象的“属性”. 判断 ...

  4. Dom选择器以及内容文本操作

    1. DOM:文档对象模型.把整个HTML当做大的对象.每一个标签认为是一个对象.(每一个个体就是一个对象) 2. 查找: 直接查找 var obj=document.getElementById(& ...

  5. [洛谷P2057][SHOI2007]善意的投票

    题目大意:有$n(n\leqslant300)$个人,每个人可以选择$0$或$1$,每个人最开始有意愿,有$m(m\leqslant\dfrac{n(n-1)}2)$对好朋友.定义一次的冲突数为好朋友 ...

  6. 【bzoj2743】[HEOI2012]采花 树状数组

    题目描述 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一排的,以便于公 ...

  7. angularJS 条件查询 品优购条件查询品牌(条件查询和列表展示公用方法解决思路 及 post请求混合参数提交方式)

    Brand.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  8. Python通过PhantomJS获取JS渲染后的网页源代码

    新建一个文件,命名为test.js,内容如下: var page = require('webpage').create(), system = require('system'), address; ...

  9. ubuntu16.04登录后无dash,无启动栏launch,无menu bar,只有桌面背景解决办法

    今天打开电脑,与往常一样输入用户名密码登录后,发现桌面上空空如也,启动栏launch,menu bar什么的都消失了,桌面上文件可以打开,但是无法拖动位置,无法关闭(因为menu bar没了,无法鼠标 ...

  10. CMDB服务器管理系统【s5day88】:兼容的实现

    比较麻烦的实现方式 类的继承方式 目录结构如下: auto_client\bin\run.py import sys import os import importlib import request ...