xref: /openbmc/libcper/cper-utils.h (revision 2d17acec)
1 #ifndef CPER_UTILS_H
2 #define CPER_UTILS_H
3 
4 #define GUID_STRING_LENGTH 48
5 #define TIMESTAMP_LENGTH   24
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 #include "common-utils.h"
12 #include <json.h>
13 
14 json_object *
15 cper_generic_error_status_to_ir(EFI_GENERIC_ERROR_STATUS *error_status);
16 void ir_generic_error_status_to_cper(
17 	json_object *error_status, EFI_GENERIC_ERROR_STATUS *error_status_cper);
18 json_object *uniform_struct_to_ir(UINT32 *start, int len, const char *names[]);
19 json_object *uniform_struct64_to_ir(UINT64 *start, int len,
20 				    const char *names[]);
21 void ir_to_uniform_struct(json_object *ir, UINT32 *start, int len,
22 			  const char *names[]);
23 void ir_to_uniform_struct64(json_object *ir, UINT64 *start, int len,
24 			    const char *names[]);
25 json_object *integer_to_readable_pair(UINT64 value, int len, const int keys[],
26 				      const char *values[],
27 				      const char *default_value);
28 json_object *integer_to_readable_pair_with_desc(int value, int len,
29 						const int keys[],
30 						const char *values[],
31 						const char *descriptions[],
32 						const char *default_value);
33 UINT64 readable_pair_to_integer(json_object *pair);
34 json_object *bitfield_to_ir(UINT64 bitfield, int num_fields,
35 			    const char *names[]);
36 UINT64 ir_to_bitfield(json_object *ir, int num_fields, const char *names[]);
37 json_object *uint64_array_to_ir_array(UINT64 *array, int len);
38 json_object *revision_to_ir(UINT16 revision);
39 const char *severity_to_string(UINT32 severity);
40 void timestamp_to_string(char *out, EFI_ERROR_TIME_STAMP *timestamp);
41 void string_to_timestamp(EFI_ERROR_TIME_STAMP *out, const char *timestamp);
42 void guid_to_string(char *out, EFI_GUID *guid);
43 void string_to_guid(EFI_GUID *out, const char *guid);
44 int guid_equal(EFI_GUID *a, EFI_GUID *b);
45 
46 //The available severity types for CPER.
47 extern const char *CPER_SEVERITY_TYPES[4];
48 
49 #ifdef __cplusplus
50 }
51 #endif
52 
53 #endif
54