Rewriting the FIFO code
Ken Brown
kbrown@cornell.edu
Fri Dec 14 00:03:00 GMT 2018
This is a followup to http://www.cygwin.org/ml/cygwin/2018-12/msg00104.html.
On 12/11/2018 2:40 PM, Corinna Vinschen wrote
> Perhaps the unfinished, new AF_UNIX
> sockets code can be reused or partially duplicated to implement FIFOs.
Here's my first idea. Associated to each FIFO is an abstract listener socket,
bound to the FIFO path name preceded by NUL. This is created as soon as there's
an attempt to open the FIFO. It acts as a communication hub for all reads from
or writes to the FIFO. Each call to fhandler_fifo::open() creates a client
socket that connects to the hub. The client is designated as a reader, writer,
or duplexer, depending on how it was opened.
The hub is created by a process that then monitors all the clients (via
select()) until one is ready to read or write, as appropriate. The process runs
as long as there are are clients connected to the hub.
There are obviously many details to be worked out, but I hope the general idea
is clear. Does this seem like a reasonable approach? Or is it unnecessarily
complicated?
Ken
More information about the Cygwin-developers
mailing list