blob: 548cd57f74bcf74cac0c02ab3459480954b22e1e [file] [log] [blame] [view]
# 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
```