[PATCH] startup: register autoboot vars in initcall

Sascha Hauer s.hauer at pengutronix.de
Fri Jun 26 02:01:34 EDT 2020


globalvars should be registered early so that code modifying them also
updates the backing store pointer. Move registering of
global.autoboot_abort_key, global.autoboot_timeout and global.autoboot
to an initcall.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 common/startup.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/common/startup.c b/common/startup.c
index 511675ed55..7e0f7d6b64 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -281,19 +281,8 @@ enum autoboot_state do_autoboot_countdown(void)
 	return autoboot_state;
 }
 
-static int run_init(void)
+static int register_autoboot_vars(void)
 {
-	DIR *dir;
-	struct dirent *d;
-	const char *initdir = "/env/init";
-	bool env_bin_init_exists;
-	enum autoboot_state autoboot;
-	struct stat s;
-
-	/*
-	 * Register autoboot variables here as they might be altered by
-	 * init scripts.
-	 */
 	globalvar_add_simple_enum("autoboot_abort_key",
 				  &global_autoboot_abort_key,
                                   global_autoboot_abort_keys,
@@ -305,6 +294,19 @@ static int run_init(void)
 				  global_autoboot_states,
 				  ARRAY_SIZE(global_autoboot_states));
 
+	return 0;
+}
+postcore_initcall(register_autoboot_vars);
+
+static int run_init(void)
+{
+	DIR *dir;
+	struct dirent *d;
+	const char *initdir = "/env/init";
+	bool env_bin_init_exists;
+	enum autoboot_state autoboot;
+	struct stat s;
+
 	setenv("PATH", "/env/bin");
 
 	/* Run legacy /env/bin/init if it exists */
-- 
2.27.0




More information about the barebox mailing list