From 58168c8e6bcf3619d281a8c877ef20e5efe049d2 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Tue, 4 Apr 2017 15:36:03 +0300 Subject: [PATCH] zephyr/zephyr_getchar: Explicitly yield to other threads on char availability. Without this, if there's a large chunk of data coming from hardware (e.g. clipboard paste, or fed programmatically from the other side of the console), there's a behavior of initial mass fill-in of the buffer without any consumption, which starts much later and doesn't catch up with further filling, leading to buffer overflow. --- zephyr/src/zephyr_getchar.c | 1 + 1 file changed, 1 insertion(+) diff --git a/zephyr/src/zephyr_getchar.c b/zephyr/src/zephyr_getchar.c index 246d86a2ef..52b3394d03 100644 --- a/zephyr/src/zephyr_getchar.c +++ b/zephyr/src/zephyr_getchar.c @@ -44,6 +44,7 @@ static int console_irq_input_hook(uint8_t ch) } //printk("%x\n", ch); k_sem_give(&uart_sem); + k_yield(); return 1; }