| # cper-lib |
| |
| This is a header-only library which provides a generic interface for users to |
| write application specific UEFI CPER log encoders. |
| |
| ## How to use this library |
| |
| The |
| [UEFI specification](https://uefi.org/specs/UEFI/2.10/Apx_N_Common_Platform_Error_Record.html#common-platform-error-record-cper) |
| for CPER logs allows for many combinations of Record Header and Section |
| Descriptor properties based on the application. However, the underlying data |
| structure does not change from application to application. To make it easier for |
| gBMC applications to log faults in the CPER format the user only needs to |
| specify the type of Record and Section type(s) that the encoder will need to |
| create. |
| |
| When developing and testing your application specific encoders, you will need to |
| install this library into your development container. |
| |
| Below is some pseudo code of how a user would setup their application specific |
| CPER encoder which takes in char array types. |
| |
| ```c++ |
| class MyCperEncoder : public CperEncoder<char> |
| { |
| RecordHeader createRecordHeader(...) override |
| {...} |
| |
| SectionDescriptor createSectionDescriptor(...) override |
| { |
| if (sectionType == kPlatformMemory) |
| { |
| return createPlatformMemoryDescriptor(); |
| } |
| else if (sectionType == kOemSection) |
| { |
| return createOemDescriptor(); |
| } |
| ... |
| } |
| |
| SectionDescriptor createPlatformMemoryDescriptor() |
| {...} |
| |
| SectionDescriptor createOemDescriptor() |
| {...} |
| } |
| ``` |
| |
| ## To install |
| |
| ```sh |
| meson setup -C builddir |
| meson install -C builddir |
| ``` |
| |
| ## To run unit tests |
| |
| ```sh |
| meson test -C builddir |
| ``` |