From 58168c8e6bcf3619d281a8c877ef20e5efe049d2 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
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 246d86a2e..52b3394d0 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;
 }
 
-- 
GitLab