11b0b00e3SLawrence Tang #ifndef CPER_PARSE_H 21b0b00e3SLawrence Tang #define CPER_PARSE_H 35202bbb4SLawrence Tang #include <json.h> 41b0b00e3SLawrence Tang 5*f8fc7052SJohn Chung #define CPER_HEADER_VALID_BITFIELD_NAMES \ 6*f8fc7052SJohn Chung (const char *[]) \ 7*f8fc7052SJohn Chung { \ 8*f8fc7052SJohn Chung "platformIDValid", "timestampValid", "partitionIDValid" \ 9*f8fc7052SJohn Chung } 10*f8fc7052SJohn Chung #define CPER_SECTION_DESCRIPTOR_VALID_BITFIELD_NAMES \ 11*f8fc7052SJohn Chung (const char *[]) \ 12*f8fc7052SJohn Chung { \ 13*f8fc7052SJohn Chung "fruIDValid", "fruStringValid" \ 14*f8fc7052SJohn Chung } 15*f8fc7052SJohn Chung #define CPER_SECTION_DESCRIPTOR_FLAGS_BITFIELD_NAMES \ 16*f8fc7052SJohn Chung (const char *[]) \ 17*f8fc7052SJohn Chung { \ 18*f8fc7052SJohn Chung "primary", "containmentWarning", "reset", \ 19*f8fc7052SJohn Chung "errorThresholdExceeded", "resourceNotAccessible", \ 20*f8fc7052SJohn Chung "latentError", "propagated", "overflow" \ 21*f8fc7052SJohn Chung } 22*f8fc7052SJohn Chung #define CPER_HEADER_FLAG_TYPES_KEYS \ 23*f8fc7052SJohn Chung (int[]) \ 24*f8fc7052SJohn Chung { \ 25*f8fc7052SJohn Chung 1, 2, 4 \ 26*f8fc7052SJohn Chung } 27*f8fc7052SJohn Chung #define CPER_HEADER_FLAG_TYPES_VALUES \ 28*f8fc7052SJohn Chung (const char *[]) \ 29*f8fc7052SJohn Chung { \ 30*f8fc7052SJohn Chung "HW_ERROR_FLAGS_RECOVERED", "HW_ERROR_FLAGS_PREVERR", \ 31*f8fc7052SJohn Chung "HW_ERROR_FLAGS_SIMULATED" \ 32*f8fc7052SJohn Chung } 333c43f743SLawrence Tang 34f0f95574SLawrence Tang json_object *cper_to_ir(FILE *cper_file); 35617949e4SLawrence Tang json_object *cper_single_section_to_ir(FILE *cper_section_file); 36f0f95574SLawrence Tang void ir_to_cper(json_object *ir, FILE *out); 37617949e4SLawrence Tang void ir_single_section_to_cper(json_object *ir, FILE *out); 381b0b00e3SLawrence Tang 391b0b00e3SLawrence Tang #endif 40