Yesterday, we (as in JS, MS and me) briefly touched some existing issues
with using the serial port driver for both reading and writing at the
same time. Martin, I thought this topic deserves some more attention, so
I wanted to state what problems I know about so that you can check your
own findings and add to the list, if you know of some other issues:

- #508 Parallel sessions don't mix well with call forwarding

This problem is making it impossible to have a parallel session opened
to a serial service using `loc_service_connect()' on the respective
_service_ path. However, due to the way this bug works, it is possible
to establish the parallel session using `devman_device_connect()` on the
respective _device_ path.

Note that the parallel sessions are one of the two possible ways to
access the device for both reading and writing at the same time. The
fibrils executing the char_dev_read() call can block inside the ns8250
driver, while fibrils executing the char_dev_write() can proceed without
being blocked by the readers.

The other way is establishing two separate serialized sessions to the
serial service. One sessions will be used for reading and the other for
writing to the device.

- The ns8250 does not support more than one connected clients.

I allowed more clients to be connected to ns8250 in:

http://bazaar.launchpad.net/~jakub/helenos/slip/revision/1818

- There appears to be a bug in QEMU, which shows when you want to
redirect the serial port to a pipe on the host using something like:

$ mkfifo /tmp/serialpipe
$ qemu ... -seril pipe:/tmp/serialpipe

https://bugs.launchpad.net/qemu/+bug/1181796

Now, do you know of more issues that would prevent parallel readers and
writers?

Jakub

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel

Reply via email to