commit | efe17e2c91d48712ca65d29710e4ed763f140176 | [log] [tgz] |
---|---|---|
author | Lawrence Tang <lawrence.tang@arm.com> | Mon Aug 08 09:16:23 2022 +0100 |
committer | Lawrence Tang <lawrence.tang@arm.com> | Mon Aug 08 09:16:23 2022 +0100 |
tree | 82b9f940a846ff5f7326cef8cfb9885a0f0a3433 | |
parent | 71c70a3d834819fb2f808f7ed74682d012fb8fd7 [diff] |
Fix several review comments.
This repository specifies a structure for representing UEFI CPER records (as described in UEFI Specification Appendix N) in a human-readable JSON format, in addition to a library which can readily convert back and forth between the standard CPER binary format and the specified structured JSON.
This project uses CMake (>=3.10). To build, simply run:
cmake . make
A static library file for the parsing library will be written to lib/
, and test executables will be written to bin/
.
This project comes with several binaries to help you deal with CPER binary and CPER-JSON. The first of these is cper-convert
, which is a command line tool that can be found in bin/
. With this, you can convert to and from CPER and CPER-JSON through the command line. An example usage scenario is below:
cper-convert to-cper samples/cper-json-test-arm.json --out cper.dump cper-convert to-json cper.generated.dump
Another tool bundled with this repository is cper-generate
, found in bin/
. This allows you to generate pseudo-random valid CPER records with sections of specified types for testing purposes. An example use of the program is below:
cper-generate --out cper.generated.dump --sections generic ia32x64
Help for both of these tools can be accessed through using the --help
flag in isolation.
Finally, a static library containing symbols for converting CPER and CPER-JSON between an intermediate JSON format can be found generated at lib/libcper-parse.a
. This contains the following useful library symbols:
json_object* cper_to_ir(FILE* cper_file); void ir_to_cper(json_object* ir, FILE* out);
This library also has Python bindings generated on build, which are placed at lib/cperparse.py
. The static library _cperparse_pylib.a
(as well as the C file cper-parsePYTHON_wrap.c
) are generated specifically for the purpose of wrapping types for the Python library, and should not be used as a standard static C library.
The specification for this project can be found in specification/
. Specification for the CPER binary format can be found in UEFI Specification Appendix N (2021/03/18).