Named Pipes in RTEMS (mkfifo type)?

Amalaye Oyake amalaye.oyake at
Sat Feb 17 00:35:24 UTC 2007

What is the status of named pipes (of the mkfifo flavor) in RTEMS. I see the
mkfifo code, but the RTEMS documentation is loaded with preamble warning
about its current status ... the docs seem to be dated 2003, so I must ask -
What is the current status of mkfifo? Are FIFOs implemented? Can I create
UNIX flavor file system named pipes in RTEMS?

{For the benefit of mailing list archive} A named pipe is created using the
mkfifo function call, and two separate processes can access the pipe by
name. {UNIX Man pages say} Once you have created a FIFO special file in this
way, any process can open it for reading or writing, in the same way as an
ordinary file. However, it has to be open at both ends simultaneously before
you can proceed to do any input or output operations on it. Opening a FIFO
for reading normally blocks until some other process opens the same FIFO for
writing, and vice versa ...


{RTEMS documentation says} RTEMS supports many of the process and user/group
oriented services in a "single user/single process" manner. This means that
although these services may be of limited usefulness or functionality, they
are provided and do work in a coherent manner. This is significant when
porting existing code from UNIX to RTEMS.
-  Implementation
-  The current implementation of dup() is insufficient.
-  FIFOs mkfifo() are not currently implemented. ***
-  Asynchronous IO is not implemented.
-  The flockfile() family is not implemented
-  getc/putc unlocked family is not implemented
-  Shared Memory is not implemented
-  Mapped Memory is not implemented

-  For Shared Memory and Mapped Memory services, it is unclear what
   level of support is appropriate and possible for RTEMS.
-  Functional Testing
-  Tests for unimplemented services
-  Performance Testing
-  There are no POSIX Performance Tests.
-  Documentation
-  Many of the service description pages are not complete in this manual. 

These need to be completed and information added to the background and
operations sections.
-  Example programs (not just tests) would be very nice.

5.4.2 Make a FIFO Special File
mkfifo(), Function, Untested Implementation
NOTE: mkfifo() is implemented but no filesystem supports FIFOs.

4.4.17 mkfifo - Makes a FIFO special file . . . . . . . . . . . . . 83


{Source code search says}

~/RTEMS/rtems-$ find ./ -iname '*.c' -exec grep -i mkfifo {} \;

  puts("mkfifo /c/my_dir" );
  status = mkfifo( "/c/my_dir", S_IRWXU );
 *  mkfifo() - POSIX 1003.1b 5.4.1 - Make a FIFO Special File
 *  $Id: mkfifo.c,v 1.4 2003/09/04 18:54:13 joel Exp $
int mkfifo(


* Amalaye Oyake                                    *
* Flight Software Applications & Data Product Mgmt */\
* 818.393.7168 work   818.653.4748 cell            *||
* Jet Propulsion Laboratory, Pasadena  CA 91109   */||\

@@@ personal opinions expressed represent only the views of the author @@@

More information about the users mailing list