Thu, 14 Dec 2000 Eric Peterson wrote:
> Hi,
>     
>     I'm trying to use RT-Linux (2.2) RT-FIFOs, and I have come up against an
>     apparent limitation with them: they only allow one writer (on the Linux
>     side) to open the FIFO.  I would like multiple processes to be able to
>     open (and write to) a single RT task via a FIFO.  
>     
>     Any suggestions?

There is an inherent implementation/semantics issue with multiple writer FIFOs;
how do you guarantee that data from writers is not mixed up?

        1) Require writers to use a single write() call for data blocks that
           need to be contiguous.
                - Implementation mess for the "writer sleeps on full buffer"
                  case.
                - Breaks if the writer uses buffered write operations, such as
                  stdio fwrite().
                - Requires some kind of multi-open extension, similar to that
                  used by some sound drivers.
                - This design is not POSIX compliant...

        2) Design an API extension that deals with multiple writers using some
           higher level approach than the write() interface.
                - This actually doesn't change anything, except that it doesn't
                  fool users into believing that they're dealing with a POSIX
                  compliant interface.
                - It doesn't even help you much in cleaning up the
                  implementation.

In short, you probably shouldn't use the RT-FIFO interface at all for multiple
writers - sockets or QNX style messages would probably be more right for the
job. Unfortunately, I'm not enough up to date with RTL to point you at
available solutions, but I think there are some.


//David

..- M A I A -------------------------------------------------.
|      Multimedia Application Integration Architecture      |
| A Free/Open Source Plugin API for Professional Multimedia |
`----------------------> http://www.linuxaudiodev.com/maia -'
..- David Olofson -------------------------------------------.
| Audio Hacker - Open Source Advocate - Singer - Songwriter |
`--------------------------------------> [EMAIL PROTECTED] -'
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/

Reply via email to