Сведения об устройстве на шине PCI
#include <hw/pci.h>#include <hw/pci_devices.h>struct pci_dev_info {uint16_t DeviceId;uint16_t VendorId;uint16_t SubsystemId;uint16_t SubsystemVendorId;uint8_t BusNumber;uint8_t DevFunc;uint8_t Revision;uint8_t Rsvd[5];uint32_t Class;uint32_t Irq;uint64_t CpuIoTranslation; /* pci_addr = cpu_addr - translation */uint64_t CpuMemTranslation; /* pci_addr = cpu_addr - translation */uint64_t CpuIsaTranslation; /* pci_addr = cpu_addr - translation */uint64_t CpuBmstrTranslation; /* pci_addr = cpu_addr + translation */uint64_t PciBaseAddress[6];uint64_t CpuBaseAddress[6];uint32_t BaseAddressSize[6];uint64_t PciRom;uint64_t CpuRom;uint32_t RomSize;uint32_t Rsvd1;uint64_t BusIoStart;uint64_t BusIoEnd;uint64_t BusMemStart;uint64_t BusMemEnd;uint8_t msi;uint8_t Rsvd2[3];uint32_t Rsvd3;};
Тип позволяет обрабатывать сведения об устройстве на шине PCI, которые являются представлением конфигурационной области дескриптора устройства на шине.
Функция pci_attach_device() не отображает какие-либо области ввода-вывода или памяти в адресное пространство процесса. Адреса, возвращаемые в структуре pci_dev_info , являются физическими адресами. |
Структура включает следующие поля:
<hw/pci_devices.h>
. <hw/pci_devices.h>
. <hw/pci.h>
. Это поле является комбинацией кода класса и кода подкласса (PCI_CLASS_DISPLAY
| PCI_SUBCLASS_DISPLAY_XGA
). 6
uint64_t
элементов). Эта функция декодирует биты 1 и 2 , чтобы узнать, имеет ли регистр размер в 32 или в 64 бит, 64-битные значения соответствуют базовым регистрам. |
6
uint64_t
элементов). 6
uint32_t
элементов). Тестирование и преобразования адресов
Чтобы облегчить тестирование адресов, возвращаемых сервером PCI, были определены следующие макросы в заголовочном файле <hw/pci.h>
:
Пример:
uint64_t port;/* Test the address returned by the pci server */if ( PCI_IS_IO( addr ) )port = (PCI_IO_ADDR( addr ));
ЗОСРВ «Нейтрино»
Предыдущий раздел: Описание API системной библиотеки