summaryrefslogtreecommitdiffstats
path: root/common/console.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/console.c')
-rw-r--r--common/console.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/console.c b/common/console.c
index b6685ecf6a..406722a1da 100644
--- a/common/console.c
+++ b/common/console.c
@@ -575,6 +575,7 @@ void console_flush(void)
EXPORT_SYMBOL(console_flush);
static int ctrlc_abort;
+static int ctrlc_allowed;
void ctrlc_handled(void)
{
@@ -586,6 +587,9 @@ int ctrlc(void)
{
int ret = 0;
+ if (!ctrlc_allowed)
+ return 0;
+
if (ctrlc_abort)
return 1;
@@ -605,5 +609,25 @@ int ctrlc(void)
}
EXPORT_SYMBOL(ctrlc);
+static int console_ctrlc_init(void)
+{
+ globalvar_add_simple_bool("console.ctrlc_allowed", &ctrlc_allowed);
+ return 0;
+}
+device_initcall(console_ctrlc_init);
+
+void console_ctrlc_allow(void)
+{
+ ctrlc_allowed = 1;
+}
+
+void console_ctrlc_forbid(void)
+{
+ ctrlc_allowed = 0;
+}
+
+BAREBOX_MAGICVAR_NAMED(global_console_ctrlc_allowed, global.console.ctrlc_allowed,
+ "If true, scripts can be aborted with ctrl-c");
+
BAREBOX_MAGICVAR_NAMED(global_linux_bootargs_console, global.linux.bootargs.console,
"console= argument for Linux from the stdout-path property in /chosen node");