It can be useful for board code to deny loading an environment without disabling it altogether, e.g. to disable load of the environment when entering a recovery mode. Add a function for that.
Signed-off-by: Ahmad Fatoum <[email protected]> --- v2 -> v3: - no change v1 -> v2: - change from globalvar to C function --- common/startup.c | 14 ++++++++++++-- include/envfs.h | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/common/startup.c b/common/startup.c index b6f8a49bb94b..73cf4a495b9c 100644 --- a/common/startup.c +++ b/common/startup.c @@ -85,6 +85,15 @@ static int mount_root(void) fs_initcall(mount_root); #endif +static bool may_autoload_external_env = IS_ENABLED(CONFIG_ENV_HANDLING); + +#ifdef CONFIG_ENV_HANDLING +void autoload_external_env(bool endis) +{ + may_autoload_external_env = endis; +} +#endif + static int load_environment(void) { const char *default_environment_path; @@ -99,10 +108,11 @@ static int load_environment(void) ERR_PTR(ret)); } - if (IS_ENABLED(CONFIG_ENV_HANDLING)) + if (may_autoload_external_env) envfs_load(default_environment_path, "/env", 0); else if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT)) - pr_info("external environment support disabled. Using default environment\n"); + pr_info("external environment support %s. Using default environment\n", + IS_ENABLED(CONFIG_ENV_HANDLING) ? "disallowed" : "disabled"); nvvar_load(); diff --git a/include/envfs.h b/include/envfs.h index e21f2b52368a..0c6b2e681515 100644 --- a/include/envfs.h +++ b/include/envfs.h @@ -105,6 +105,7 @@ int envfs_load_from_buf(void *buf, int len, const char *dir, unsigned flags); #ifdef CONFIG_ENV_HANDLING void default_environment_path_set(const char *path); const char *default_environment_path_get(void); +void autoload_external_env(bool endis); #else static inline void default_environment_path_set(const char *path) { @@ -114,6 +115,10 @@ static inline const char *default_environment_path_get(void) { return NULL; } + +static inline void autoload_external_env(bool endis) +{ +} #endif #ifdef CONFIG_OF_BAREBOX_DRIVERS -- 2.47.3
