Support Functions for PCI Access

C++ (OlsDef.h) *Macro

// Bus Number, Device Number and Function Number to PCI Device Address
#define PciBusDevFunc(Bus, Dev, Func) ((Bus&0xFF)<<8) | ((Dev&0x1F)<<3) | (Func&7) // PCI Device Address to Bus Number #define PciGetBus(address) ((address>>8) & 0xFF) // PCI Device Address to Device Number
#define PciGetDev(address) ((address>>3) & 0x1F) // PCI Device Address to Function Number #define PciGetFunc(address) (address&7)

C# (OpenLibSys.cs)

// Bus Number, Device Number and Function Number to PCI Device Address
public uint PciBusDevFunc(uint bus, uint dev, uint func) { return ((bus&0xFF)<<8) | ((dev&0x1F)<<3) | (func&7); } // PCI Device Address to Bus Number
public uint PciGetBus(uint address) { return ((address>>8) & 0xFF); } // PCI Device Address to Device Number
public uint PciGetDev(uint address) { return ((address>>3) & 0x1F); } // PCI Device Address to Function Number
public uint PciGetFunc(uint address) { return (address&7); }

PCI Device Address

bit description
0- 2
Function Number
3- 7
Device Number
8-15
PCI Bus Number
16-31
Reserved

Requirements