1 #ifndef CPER_SECTION_PCI_DEV_H 2 #define CPER_SECTION_PCI_DEV_H 3 4 #include <json.h> 5 #include "../edk/Cper.h" 6 7 #define PCI_DEV_ERROR_VALID_BITFIELD_NAMES (const char*[]) {"errorStatusValid", "idInfoValid", "memoryNumberValid", \ 8 "ioNumberValid", "registerDataPairsValid"} 9 10 /// 11 /// PCI/PCI-X Device Error Section 12 /// 13 typedef struct { 14 UINT64 VendorId : 16; 15 UINT64 DeviceId : 16; 16 UINT64 ClassCode : 24; 17 UINT64 FunctionNumber : 8; 18 UINT64 DeviceNumber : 8; 19 UINT64 BusNumber : 8; 20 UINT64 SegmentNumber : 8; 21 UINT64 Reserved : 40; 22 } EFI_PCI_PCIX_DEVICE_ID_INFO; 23 24 typedef struct { 25 UINT64 ValidFields; 26 EFI_GENERIC_ERROR_STATUS ErrorStatus; 27 EFI_PCI_PCIX_DEVICE_ID_INFO IdInfo; 28 UINT32 MemoryNumber; 29 UINT32 IoNumber; 30 } __attribute__((packed, aligned(1))) EFI_PCI_PCIX_DEVICE_ERROR_DATA; 31 32 json_object* cper_section_pci_dev_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor); 33 void ir_section_pci_dev_to_cper(json_object* section, FILE* out); 34 35 #endif