1 #ifndef CPER_PARSE_H 2 #define CPER_PARSE_H 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 #include <json.h> 9 #include <stdio.h> 10 11 #define CPER_HEADER_VALID_BITFIELD_NAMES \ 12 (const char *[]){ "platformIDValid", "timestampValid", \ 13 "partitionIDValid" } 14 #define CPER_SECTION_DESCRIPTOR_VALID_BITFIELD_NAMES \ 15 (const char *[]){ "fruIDValid", "fruStringValid" } 16 #define CPER_SECTION_DESCRIPTOR_FLAGS_BITFIELD_NAMES \ 17 (const char *[]){ "primary", \ 18 "containmentWarning", \ 19 "reset", \ 20 "errorThresholdExceeded", \ 21 "resourceNotAccessible", \ 22 "latentError", \ 23 "propagated", \ 24 "overflow" } 25 #define CPER_HEADER_FLAG_TYPES_KEYS (int[]){ 1, 2, 4 } 26 #define CPER_HEADER_FLAG_TYPES_VALUES \ 27 (const char *[]){ "HW_ERROR_FLAGS_RECOVERED", \ 28 "HW_ERROR_FLAGS_PREVERR", \ 29 "HW_ERROR_FLAGS_SIMULATED" } 30 31 int header_valid(const char *cper_buf, size_t size); 32 33 json_object *cper_to_ir(FILE *cper_file); 34 json_object *cper_buf_to_ir(const unsigned char *cper_buf, size_t size); 35 json_object *cper_single_section_to_ir(FILE *cper_section_file); 36 json_object *cper_buf_single_section_to_ir(const unsigned char *cper_buf, 37 size_t size); 38 39 void ir_to_cper(json_object *ir, FILE *out); 40 void ir_single_section_to_cper(json_object *ir, FILE *out); 41 42 #ifdef __cplusplus 43 } 44 #endif 45 46 #endif 47