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 <[email protected]>
---
 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


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to