Add support for an owned buffer
authorSimon Glass <sjg@chromium.org>
Sat, 25 Sep 2021 13:03:07 +0000 (07:03 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 8 Oct 2021 19:53:26 +0000 (15:53 -0400)
commit67bc59df05331eaac56cd0a00219d1386130aee2
tree4ab0700c8d9b3695e0b29537edbc6a718557612f
parent930c887e0fb88dcf1907f268960330c17999b5a3
Add support for an owned buffer

When passing a data buffer back from a function, it is not always clear
who owns the buffer, i.e. who is responsible for freeing the memory used.
An example of this is where multiple files are decompressed from the
firmware image, using a temporary buffer for reading (since the
compressed data has to live somewhere) and producing a temporary or
permanent buffer with the resuilts.

Where the firmware image can be memory-mapped, as on x86, the compressed
data does not need to be buffered, but the complexity of having a buffer
which is either allocated or not, makes the code hard to understand.

Introduce a new 'abuf' which supports simple buffer operations:

- encapsulating a buffer and its size
- either allocated with malloc() or not
- able to be reliably freed if necessary
- able to be converted to an allocated buffer if needed

This simple API makes it easier to deal with allocated and memory-mapped
buffers.

Signed-off-by: Simon Glass <sjg@chromium.org>
include/abuf.h [new file with mode: 0644]
lib/Makefile
lib/abuf.c [new file with mode: 0644]
test/lib/Makefile
test/lib/abuf.c [new file with mode: 0644]