#ifndef CPER_SECTION_PCI_DEV_H #define CPER_SECTION_PCI_DEV_H #include #include "../edk/Cper.h" #define PCI_DEV_ERROR_VALID_BITFIELD_NAMES (const char*[]) {"errorStatusValid", "idInfoValid", "memoryNumberValid", \ "ioNumberValid", "registerDataPairsValid"} /// /// PCI/PCI-X Device Error Section /// typedef struct { UINT64 VendorId : 16; UINT64 DeviceId : 16; UINT64 ClassCode : 24; UINT64 FunctionNumber : 8; UINT64 DeviceNumber : 8; UINT64 BusNumber : 8; UINT64 SegmentNumber : 8; UINT64 Reserved : 40; } EFI_PCI_PCIX_DEVICE_ID_INFO; typedef struct { UINT64 ValidFields; EFI_GENERIC_ERROR_STATUS ErrorStatus; EFI_PCI_PCIX_DEVICE_ID_INFO IdInfo; UINT32 MemoryNumber; UINT32 IoNumber; } __attribute__((packed, aligned(1))) EFI_PCI_PCIX_DEVICE_ERROR_DATA; json_object* cper_section_pci_dev_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor); void ir_section_pci_dev_to_cper(json_object* section, FILE* out); #endif