表示系统中的每个PCI设备,包括PCI-PCI和PCI-PCI桥接器。
/*
* There is one pci_dev structure for each slot-number/function-number
* combination:
*/
struct pci_dev {
struct pci_bus *bus; /* bus this device is on */
struct pci_dev *sibling; /* next device on this bus */
struct pci_dev *next; /* chain of all devices */
void *sysdata; /* hook for sys-specific extension */
unsigned int devfn; /* encoded device & function index */
unsigned short vendor;
unsigned short device;
unsigned int class; /* 3 bytes: (base,sub,prog-if) */
unsigned int master : 1; /* set if device is master capable */
/*
* In theory, the irq level can be read from configuration
* space and all would be fine. However, old PCI chips don't
* support these registers and return 0 instead. For example,
* the Vision864-P rev 0 chip can uses INTA, but returns 0 in
* the interrupt line and pin registers. pci_init()
* initializes this field with the value at PCI_INTERRUPT_LINE
* and it is the job of pcibios_fixup() to change it if
* necessary. The field must not be 0 unless the device
* cannot generate interrupts at all.
*/
unsigned char irq; /* irq generated by this device */
};
分享到:
相关推荐
在Linux操作系统中,PCI(Peripheral Component Interconnect)设备驱动程序设计是系统级编程的一个重要方面。PCI标准定义了一种高速接口,允许计算机与其他设备(如网络卡、声卡、图形卡等)进行通信。理解并设计...
### Linux内核数据流分析 #### 一、概述 Linux内核数据流是理解网络通信在操作系统层面如何处理的关键概念之一。数据包从物理层(网卡)接收开始,直至到达用户空间应用程序的过程,涉及了从底层硬件驱动到内核...
它会创建一个数据结构链表来描述整个PCI系统的拓扑结构,并对所有发现的PCI桥进行编号。 2. **PCI BIOS**:这是一个软件层,提供了在BIOS-PCI归约中描述的服务。尽管某些平台如Alpha AXP不提供传统的BIOS服务,但...
struct pci_dev是Linux内核中用于描述PCI设备的数据结构,该结构体定义在文件/include/linux/pci.h中。该结构体的主要成员变量包括: * global_list:PCI设备的全局链表 * bus_list:PCI设备的总线链表 * bus:PCI...
在Linux操作系统中,设备模型是系统管理硬件设备...通过阅读"Linux 2[1].6 device model.pdf"这份文档,你可以深入了解这一模型的细节,包括它的设计原则、数据结构和API,这对于理解和开发Linux驱动程序是至关重要的。
Linux内核通过定义特定的数据结构来管理和操作PCI资源: - **PCI控制器**:描述PCI控制器的信息,包括控制器的能力和状态。 - **PCI设备**:封装单个PCI设备的详细信息,如设备ID、基地址寄存器等。 - **PCI总线**:...
本文将深入探讨Linux设备模型的核心概念、关键数据结构以及相关的API,帮助读者更好地理解和掌握Linux设备驱动开发。 #### 二、Linux设备模型概述 Linux设备模型主要由以下几部分组成: 1. **设备注册与注销**:...
这个过程中,内核会创建一个描述PCI系统拓扑的数据结构链表,并对每个发现的设备进行编号。 2. **配置**:枚举完成后,内核会配置每个PCI设备,包括设置中断号、I/O或内存基地址等参数。这些配置是通过访问PCI配置...
- **`struct video_device`**: 这是V4L2驱动程序的核心数据结构之一,定义在`v4l2-dev.h`中,用于表示一个视频设备的属性和行为。 - `fops`: 文件操作指针,用于处理文件打开、关闭等操作。 - `cdev`: 字符设备...
为了更好地管理和分配这些资源,Linux设计了一个通用的数据结构——`resource`,用于描述各种类型的I/O资源。 ##### 1. `resource`结构体 `resource`结构体定义在`include/linux/ioport.h`头文件中,主要用于表示I...
- **数据结构**:定义了表示CX23885设备状态和配置的结构体,如设备描述符、缓冲区信息等。 - **函数原型**:声明了驱动程序中使用的公共函数,包括初始化函数、I/O操作函数、中断处理函数等。 - **宏定义**:...
这部分涉及到socket基础设施的建立,如socket数据结构、缓冲区管理等。 2. **subsys_initcall(net_dev_init)**: 初始化网络设备。这里主要是设置各种网络接口设备,准备接收和发送数据包的硬件环境。 3. **fs_...
每种类别的PCI设备都可以用`struct pci_dev`数据结构来描述。具体来说,每一个PCI功能或PCI逻辑设备都唯一对应一个`pci_dev`结构。该结构定义在`include/linux/pci.h`头文件中。 ```c struct pci_dev { struct ...
10. **pci_bus** 和 **pci_dev**:这两个数据结构用于管理PCI总线和PCI设备,包括PCI-PCI桥和PCI-ISA桥,是硬件设备连接的关键。 11. **request**:在块设备I/O操作中,request数据结构用于向块设备发送读写请求。 ...
这个宏会在数据结构`pci_device_id`中填充特定的厂商ID(`vendor_id`)和设备ID(`device_id`)。`subvendor`和`subdevice`字段被设置为通配符`PCI_ANY_ID`,表示这些字段不参与匹配。 Intel e1000网卡的PCI设备ID定义...
Linux下的PCI驱动程序可以看做字符设备的驱动来设计,PCI驱动加载以后,为了操作设备文件,Linux会在include/linux/fs.h中提供一个数据结构file_operations,该数据结构可向Linux文件系统注册一组文件操作,以...
以Intel e100驱动为例,其`pci_driver`结构如下: ```c static struct pci_driver e100_driver = { .name = DRV_NAME, .id_table = e100_id_table, .probe = e100_probe, .remove = __devexit_p(e100_remove), ...
《Linux数据结构》一书详尽地介绍了在Linux操作系统中使用的关键数据结构,这些数据结构是内核功能的基础。在Linux内核中,数据结构扮演着至关重要的角色,因为它们被用来组织和管理系统的资源,如文件、内存、设备...
在 Linux 驱动开发中,需要掌握一些基本的数据结构和处理函数,本文将对这些结构和函数进行详细的解释。 1. struct device struct device 是 Linux 内核中最基本的数据结构之一,它用于描述一个设备的基本信息。该...