Just requesting comments. I'm using this on my hw. The idea is that /env/bin/init may be uninterruptible and the user may be unable to recover control over the barebox. Perhaps there is a better way? Signed-off-by: Krzysztof Hałasa <khc@xxxxxxxxx> diff --git a/common/startup.c b/common/startup.c index abd1b77..fde99d5 100644 --- a/common/startup.c +++ b/common/startup.c @@ -30,6 +30,7 @@ * @brief Main entry into the C part of barebox */ #include <common.h> +#include <clock.h> #include <init.h> #include <command.h> #include <malloc.h> @@ -117,6 +118,8 @@ void start_barebox (void) int result; #ifdef CONFIG_COMMAND_SUPPORT struct stat s; + uint64_t start; + int stop = 0; #endif for (initcall = __barebox_initcalls_start; @@ -130,6 +133,17 @@ void start_barebox (void) display_meminfo(); +#ifdef CONFIG_COMMAND_SUPPORT + start = get_time_ns(); + printf("\nPress Control-C to stop."); + while (!is_timeout(start, 2 * SECOND)) + if (ctrlc()) { + stop = 1; + break; + } + putchar('\n'); +#endif + #ifdef CONFIG_ENV_HANDLING if (envfs_load(default_environment_path, "/env")) { #ifdef CONFIG_DEFAULT_ENVIRONMENT @@ -141,14 +155,16 @@ void start_barebox (void) } #endif #ifdef CONFIG_COMMAND_SUPPORT - printf("running /env/bin/init...\n"); - - if (!stat("/env/bin/init", &s)) { + if (stop) + printf("skipping /env/bin/init\n"); + else if (!stat("/env/bin/init", &s)) { + printf("running /env/bin/init...\n"); run_command("source /env/bin/init", 0); - } else { - printf("not found\n"); - } + } else + printf("/env/bin/init not found\n"); + #endif + /* main_loop() can return to retry autoboot, if so just run it again. */ for (;;) run_shell(); -- Krzysztof Halasa _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox