diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/console_common.c | 14 | ||||
-rw-r--r-- | common/startup.c | 28 | ||||
-rw-r--r-- | common/tlsfbits.h | 6 |
3 files changed, 34 insertions, 14 deletions
diff --git a/common/console_common.c b/common/console_common.c index 1e362ab4e4..2c82c6fd46 100644 --- a/common/console_common.c +++ b/common/console_common.c @@ -106,15 +106,23 @@ static void pr_puts(int level, const char *str) log_clean(barebox_log_max_messages - 1); if (barebox_log_max_messages >= 0) { - log = xzalloc(sizeof(*log)); - log->msg = xstrdup(str); + log = malloc(sizeof(*log)); + if (!log) + goto nolog; + + log->msg = strdup(str); + if (!log->msg) { + free(log); + goto nolog; + } + log->timestamp = get_time_ns(); log->level = level; list_add_tail(&log->list, &barebox_logbuf); barebox_logbuf_num_messages++; } } - +nolog: if (level > barebox_loglevel) return; diff --git a/common/startup.c b/common/startup.c index e59b06d533..6178fc5353 100644 --- a/common/startup.c +++ b/common/startup.c @@ -62,6 +62,24 @@ static int mount_root(void) fs_initcall(mount_root); #endif +#ifdef CONFIG_ENV_HANDLING +static int load_environment(void) +{ + const char *default_environment_path; + + default_environment_path = default_environment_path_get(); + + if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT)) + defaultenv_load("/env", 0); + + envfs_load(default_environment_path, "/env", 0); + nvvar_load(); + + return 0; +} +environment_initcall(load_environment); +#endif + int (*barebox_main)(void); void __noreturn start_barebox(void) @@ -84,16 +102,6 @@ void __noreturn start_barebox(void) pr_debug("initcalls done\n"); - if (IS_ENABLED(CONFIG_ENV_HANDLING)) { - char *default_environment_path = default_environment_path_get(); - - if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT)) - defaultenv_load("/env", 0); - - envfs_load(default_environment_path, "/env", 0); - nvvar_load(); - } - if (IS_ENABLED(CONFIG_COMMAND_SUPPORT)) { pr_info("running /env/bin/init...\n"); diff --git a/common/tlsfbits.h b/common/tlsfbits.h index 93466e46a8..edbac80636 100644 --- a/common/tlsfbits.h +++ b/common/tlsfbits.h @@ -3,6 +3,10 @@ #include <linux/bitops.h> +#ifdef CONFIG_64BIT +#define TLSF_64BIT +#endif + /* ** Architecture-specific bit manipulation routines. ** @@ -33,7 +37,7 @@ static int tlsf_fls(unsigned int word) /* Possibly 64-bit version of tlsf_fls. */ #if defined (TLSF_64BIT) -tlsf_decl int tlsf_fls_sizet(size_t size) +static int tlsf_fls_sizet(size_t size) { int high = (int)(size >> 32); int bits = 0; |