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.
This commit is contained in:
Paul Sokolovsky 2017-04-04 15:36:03 +03:00
parent 468c6f9da1
commit 58168c8e6b

View File

@ -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;
}