From c980eaff1d10cb169ba22ce00e75dae318df21f1 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 16 Oct 2018 14:35:12 +0200 Subject: console: Be fair in simple console read Wait for one tick in case no character is available after a call to getchark(). Otherwise the system is constantly busy within an input loop (for example in the RTEMS shell). The polled Termios driver uses the same approach. --- cpukit/libcsupport/src/consolesimpleread.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/cpukit/libcsupport/src/consolesimpleread.c b/cpukit/libcsupport/src/consolesimpleread.c index a796e4380f..737b441d99 100644 --- a/cpukit/libcsupport/src/consolesimpleread.c +++ b/cpukit/libcsupport/src/consolesimpleread.c @@ -33,9 +33,14 @@ ssize_t _Console_simple_Read( for ( i = 0; i < n; ++i ) { int c; - do { + while ( true ) { c = getchark(); - } while (c == -1); + if ( c != -1 ) { + break; + } + + (void) rtems_task_wake_after( 1 ); + } buf[ i ] = (char) c; } -- cgit v1.2.3