L4Re: Input via UART fails with Ned involvement

Paul Boddie <[email protected]> Tue, 19 Sep 2023 00:05:19 +0200
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <3475875.ALf3LxdjXT@jason>
Hello,

I have been trying to get some sensible behaviour from various programs 
running in L4Re that wish to read from standard input, hopefully using the 
UART, since standard output is successfully sent across the serial connection. 
However, it appears that Ned does something rather undesirable with the input 
stream.

If I modify the hello example to use fgets and deploy it without Ned (the 
hello.cfg example in conf/examples), as long as some kind of serial 
initialisation has occurred, I can enter characters at the serial console and 
have the program read them. However, if I deploy the same code using Ned (the 
hello.cfg example in conf/examples), fgets repeatedly returns NULL.

Strangely, if I follow the instructions in the L4Re documentation...

https://l4re.org/doc/l4re_servers_ned.html#l4re_ned_interactive

The ned-prompt program itself just prints "Cmd>" over and over again, failing 
to read anything. It is as if non-blocking I/O has been enabled, although ned-
prompt appears to use readline, so I imagine that there is likely to be a 
somewhat different explanation. Attempting to enforce non-blocking input using 
fcntl in the hello example also does not help.

Has anyone any suggestions as to why these things do not work? I have tried 
this on physical hardware as well as in QEMU.

Thanks in advance,

Paul