Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Fields
pci_io_addr_range Struct Reference

Data Fields

struct rb_node rb_node
 
unsigned long addr_lo
 
unsigned long addr_hi
 
struct eeh_dev * edev
 
struct pci_devpcidev
 
unsigned int flags
 

Detailed Description

The pci address cache subsystem. This subsystem places PCI device address resources into a red-black tree, sorted according to the address range, so that given only an i/o address, the corresponding PCI device can be quickly found. It is safe to perform an address lookup in an interrupt context; this ability is an important feature.

Currently, the only customer of this code is the EEH subsystem; thus, this code has been somewhat tailored to suit EEH better. In particular, the cache does not hold the addresses of devices for which EEH is not enabled.

(Implementation Note: The RB tree seems to be better/faster than any hash algo I could think of for this problem, even with the penalty of slow pointer chases for d-cache misses).

Definition at line 49 of file eeh_cache.c.

Field Documentation

unsigned long addr_hi

Definition at line 52 of file eeh_cache.c.

unsigned long addr_lo

Definition at line 51 of file eeh_cache.c.

struct eeh_dev* edev

Definition at line 53 of file eeh_cache.c.

unsigned int flags

Definition at line 55 of file eeh_cache.c.

struct pci_dev* pcidev

Definition at line 54 of file eeh_cache.c.

Definition at line 50 of file eeh_cache.c.


The documentation for this struct was generated from the following file: