coreboot-kgpe-d16/payloads/libpayload/include
Julius Werner 2296479dfd libpayload: cbfs: Add cbfs_handle API for more fine-grained accesses
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>
2016-05-17 22:48:28 +02:00
..
arm/arch tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
arm64/arch arm64: mmu: Prevent CPU prefetch instructions from device memory 2015-09-28 09:36:32 +00:00
arpa Refactor the endianness conversion functions and header files. 2012-11-08 19:49:51 +01:00
mips/arch tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
pci libpayload: Add a few more PCI constants 2013-08-26 00:24:53 +02:00
storage libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
sys libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
udc tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
usb libpayload: xhci: Set MPS based on speed 2016-05-09 08:29:57 +02:00
x86/arch libpayload: x86: Add read/write{8,16,32} variants that match coreboot 2015-08-28 06:46:28 +00:00
archive.h libpayload: add archive.h 2015-12-16 19:00:53 +01:00
assert.h libpayload: Fix the format string of the assert macro. 2012-11-07 18:36:05 +01:00
cbfs.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
cbfs_core.h libpayload: cbfs: Add cbfs_handle API for more fine-grained accesses 2016-05-17 22:48:28 +02:00
cbfs_ram.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
cbgfx.h cbgfx: add error code to cbgfx_init 2016-01-14 18:44:20 +01:00
coreboot_tables.h coreboot_tables: Extend serial port description 2016-05-09 17:21:22 +02:00
ctype.h Attached patch moves functions out of the huge libpayload.h into headers 2010-06-24 11:16:10 +00:00
die.h libpayload: Add a new "die" function to fatally signal programming errors. 2014-09-15 17:37:13 +02:00
endian.h libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
errno.h Attached patch moves functions out of the huge libpayload.h into headers 2010-06-24 11:16:10 +00:00
exception.h libpayload: Rework exception hook interface 2015-01-09 07:05:15 +01:00
fmap_serialized.h libpayload: Add support for handling fmaps 2015-07-14 18:12:06 +02:00
gdb.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
getopt.h
inttypes.h libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
ipchksum.h libpayload: Add a new "die" function to fatally signal programming errors. 2014-09-15 17:37:13 +02:00
kconfig.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
keycodes.h libpayload: Make keycode constants available outside of curses.h. 2013-03-18 20:45:48 +01:00
libpayload.h libpayload: time: split time.h from libpayload.h 2016-04-21 23:08:52 +02:00
limits.h libpayload: Improve compatibility 2011-07-16 11:09:28 +02:00
lz4.h cbfs: Add LZ4 in-place decompression support for pre-RAM stages 2016-02-22 21:38:37 +01:00
lzma.h LZMA: Add a version of ulzma which takes the input and output buffer sizes. 2014-08-10 22:29:51 +02:00
malloc.h libpayload: Provide atol(), malloc.h 2011-07-07 22:29:53 +02:00
multiboot_tables.h
panel.h libpayload: Add PDCurses and ncurses' libform/libmenu 2011-08-04 08:10:41 +02:00
pci.h libpayload: Add definitions for more config space registers. 2012-11-07 18:36:27 +01:00
queue.h libpayload: queue: Add a helper macro for checking singleton queue 2015-11-13 00:52:58 +01:00
stdarg.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
stddef.h update common base header files 2015-07-06 09:41:38 +02:00
stdint.h libpayload: Add ptrdiff_t typedef 2015-10-20 16:50:25 +02:00
stdio.h libpayload: Add the format attribute to functions in stdio.h. 2012-11-07 18:36:14 +01:00
stdlib.h libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
string.h libpayload: UTF-16LE to ASCII conversion 2015-03-20 09:59:48 +01:00
strings.h libpayload: Revive ffs() 2015-09-10 20:11:33 +00:00
swab.h libpayload: arch/mips: Add basic MIPS architecture support 2015-03-21 11:07:50 +01:00
sysinfo.h libpayload: Drop CONFIG_LP_CHROMEOS 2016-03-15 18:22:58 +01:00
term.h libpayload: remove trailing whitespace and run dos2unix 2011-11-01 19:08:23 +01:00
time.h libpayload: time: split time.h from libpayload.h 2016-04-21 23:08:52 +02:00
unistd.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
video_console.h