summaryrefslogtreecommitdiffstats
path: root/layout.c
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2021-05-14 01:07:28 +0200
committerNico Huber <nico.h@gmx.de>2021-06-26 15:59:34 +0000
commitd855351ce708531b8bc060611a30d37294a941ac (patch)
tree821d56b897fc459e7897516a9c0f4c5892e632fc /layout.c
parent7f480531721bca467541f9471ab39937fa9c2ad5 (diff)
downloadflashrom-d855351ce708531b8bc060611a30d37294a941ac.tar.gz
flashrom-d855351ce708531b8bc060611a30d37294a941ac.tar.bz2
flashrom-d855351ce708531b8bc060611a30d37294a941ac.zip
layout: Kill the global layout
Change-Id: Ic302e9c5faf1368e5ca244ce461e55e14f916ab8 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/flashrom/+/54286 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'layout.c')
-rw-r--r--layout.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/layout.c b/layout.c
index e4f168192..a043d2167 100644
--- a/layout.c
+++ b/layout.c
@@ -35,15 +35,6 @@ struct layout_include_args {
struct layout_include_args *next;
};
-static struct flashrom_layout *global_layout;
-
-struct flashrom_layout *get_global_layout(void)
-{
- if (!global_layout)
- flashrom_layout_new(&global_layout);
- return global_layout;
-}
-
const struct flashrom_layout *get_default_layout(const struct flashrom_flashctx *const flashctx)
{
return flashctx->default_layout;
@@ -75,13 +66,15 @@ static struct romentry *_layout_entry_by_name(
}
#ifndef __LIBPAYLOAD__
-int read_romlayout(const char *name)
+int layout_from_file(struct flashrom_layout **layout, const char *name)
{
- struct flashrom_layout *const layout = get_global_layout();
FILE *romlayout;
char tempstr[256], tempname[256];
int ret = 1;
+ if (flashrom_layout_new(layout))
+ return 1;
+
romlayout = fopen(name, "r");
if (!romlayout) {
@@ -107,7 +100,7 @@ int read_romlayout(const char *name)
msg_gerr("Error parsing layout file. Offending string: \"%s\"\n", tempstr);
goto _close_ret;
}
- if (flashrom_layout_add_region(layout,
+ if (flashrom_layout_add_region(*layout,
strtol(tstr1, NULL, 16), strtol(tstr2, NULL, 16), tempname))
goto _close_ret;
}
@@ -219,7 +212,7 @@ int process_include_args(struct flashrom_layout *l, const struct layout_include_
return 0;
/* User has specified an include argument, but no layout is loaded. */
- if (!l->head) {
+ if (!l || !l->head) {
msg_gerr("Region requested (with -i \"%s\"), "
"but no layout data is available.\n",
args->name);
@@ -283,7 +276,6 @@ int included_regions_overlap(const struct flashrom_layout *const l)
void layout_cleanup(struct layout_include_args **args)
{
- struct flashrom_layout *const layout = get_global_layout();
struct layout_include_args *tmp;
while (*args) {
@@ -293,9 +285,6 @@ void layout_cleanup(struct layout_include_args **args)
free(*args);
*args = tmp;
}
-
- global_layout = NULL;
- flashrom_layout_release(layout);
}
int layout_sanity_checks(const struct flashrom_flashctx *const flash)
@@ -462,9 +451,6 @@ int flashrom_layout_include_region(struct flashrom_layout *const layout, const c
*/
void flashrom_layout_release(struct flashrom_layout *const layout)
{
- if (layout == global_layout)
- return;
-
if (!layout)
return;