[PATCH] console: Be fair in simple console read

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Oct 17 08:06:39 UTC 2018


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



More information about the devel mailing list