Re: L4Re: Input via UART fails with Ned involvement

Philipp Eppelt <[email protected]> Tue, 19 Sep 2023 11:56:44 +0200
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hi Paul,

thanks for bringing this up. I can reproduce this on my machine.
I don't fully understand the root cause for this behavior quite yet, but 
I can provide a way to continue.

First, there is a fault in the documentation for the ned-prompt startup, 
the correct lua line is:

l:start({ log = L4.Env.log, caps = { svr = cmd} }, "rom/ned-prompt")

Contrary to the documentation you linked to, `log` must be declared 
outside of the `caps` table.
With this fix, ned-prompt waits for input.

For the hello startup the same fix applies. Explicitly specifying the 
log capability within the table parameter of the call to `start()` leads 
to a working input:

L4.default_loader:start({ log = L4.Env.log }, "rom/hello")

The difference between the case with log parameter set to L4.Env.log and 
without log parameter - so an implicit/default log capability - is that 
L4.Env.log references Moe to handle the log interactions. Otherwise, the 
kernel's log is directly used, which seems to behave differently. I 
don't know why yet.

Cheers,
Philipp


On 9/19/23 00:05, Paul Boddie wrote:
> 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
> 
> 
> 
> _______________________________________________
> l4-hackers mailing list
> [email protected]
> https://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers

-- 
[email protected] - Tel. 0351-41 883 221
http://www.kernkonzept.com

Kernkonzept GmbH.  Sitz: Dresden.  Amtsgericht Dresden, HRB 31129.
Geschäftsführer: Dr.-Ing. Michael Hohmuth

_______________________________________________
l4-hackers mailing list
[email protected]
https://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
OpenPGP_signature (application/pgp-signature, 840 B) - not displayed