2296479dfd
The libpayload CBFS APIs are pretty old and clunky, primarily because of the way the cbfs_media struct may or may not be passed in and may be initialized inside the API calls in a way that cannot be passed back out again. Due to this, the only real CBFS access function we have always reads a whole file with all metadata, and everything else has to build on top of that. This makes certain tasks like reading just a file attribute very inefficient on non-memory-mapped platforms (because you always have to map the whole file). This patch isn't going to fix the world, but will allow a bit more flexibility by bolting a new API on top which uses a struct cbfs_handle to represent a found but not yet read file. A cbfs_handle contains a copy of the cbfs_media needed to read the file, so it can be kept and passed around to read individual parts of it after the initial lookup. The existing (non-media) legacy API is retained for backwards compatibility, as is cbfs_file_get_contents() (which is most likely what more recent payloads would have used, and also a good convenience wrapper for the most simple use case), but they are now implemented on top of the new API. TEST=Booted Oak, made sure that firmware screens and software sync worked okay. Change-Id: I269f3979e77ae691ee9d4e1ab564eff6d45b7cbe Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/14810 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org> |
||
---|---|---|
.. | ||
arm/arch | ||
arm64/arch | ||
arpa | ||
mips/arch | ||
pci | ||
storage | ||
sys | ||
udc | ||
usb | ||
x86/arch | ||
archive.h | ||
assert.h | ||
cbfs.h | ||
cbfs_core.h | ||
cbfs_ram.h | ||
cbgfx.h | ||
coreboot_tables.h | ||
ctype.h | ||
die.h | ||
endian.h | ||
errno.h | ||
exception.h | ||
fmap_serialized.h | ||
gdb.h | ||
getopt.h | ||
inttypes.h | ||
ipchksum.h | ||
kconfig.h | ||
keycodes.h | ||
libpayload.h | ||
limits.h | ||
lz4.h | ||
lzma.h | ||
malloc.h | ||
multiboot_tables.h | ||
panel.h | ||
pci.h | ||
queue.h | ||
stdarg.h | ||
stddef.h | ||
stdint.h | ||
stdio.h | ||
stdlib.h | ||
string.h | ||
strings.h | ||
swab.h | ||
sysinfo.h | ||
term.h | ||
time.h | ||
unistd.h | ||
video_console.h |