diff options
author | Brian Norris <briannorris@chromium.org> | 2023-06-22 11:07:18 -0700 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2023-07-18 01:17:04 +0000 |
commit | e08899fcf4127de5cb2ad2dd134539d41f7e33b0 (patch) | |
tree | 19cd45fa1c6bc251967ea948355e7c44b81b2535 /layout.c | |
parent | 91aa2d85269fa8cf214e3eeb9e9df60e874be0f2 (diff) | |
download | flashrom-e08899fcf4127de5cb2ad2dd134539d41f7e33b0.tar.gz flashrom-e08899fcf4127de5cb2ad2dd134539d41f7e33b0.tar.bz2 flashrom-e08899fcf4127de5cb2ad2dd134539d41f7e33b0.zip |
libflashrom: Add layout "exclude" API
Layouts can be expensive to derive (reading from flash), so we might
want to reuse a layout for different purposes. Today, it's not possible
to undo a flashrom_layout_include_region() operation (to, say, operate
on a different region). Add such an API.
Change-Id: I7ea3e0674f25e34bf2cfc8f464ae7ca1c1a3fbfd
Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/76005
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Nikolai Artemiev <nartemiev@google.com>
Diffstat (limited to 'layout.c')
-rw-r--r-- | layout.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -217,6 +217,17 @@ static int include_region(struct flashrom_layout *const l, const char *name, return 1; } +/* returns 0 to indicate success, 1 to indicate failure */ +static int exclude_region(struct flashrom_layout *const l, const char *name) +{ + struct romentry *const entry = _layout_entry_by_name(l, name); + if (entry) { + entry->included = false; + return 0; + } + return 1; +} + /* returns -1 if an entry is not found, 0 if found. */ static int romentry_exists(struct flashrom_layout *const l, char *name, char *file) { @@ -441,6 +452,11 @@ int flashrom_layout_include_region(struct flashrom_layout *const layout, const c return include_region(layout, name, NULL); } +int flashrom_layout_exclude_region(struct flashrom_layout *const layout, const char *name) +{ + return exclude_region(layout, name); +} + int flashrom_layout_get_region_range(struct flashrom_layout *const l, const char *name, unsigned int *start, unsigned int *len) { |