rtf_get -- read data from a realtime fifo


       #include <rtl_fifo.h>

       int rtf_get(unsigned int fifo, char * buf, int count);


rtf_get reads a block of data from a realtime fifo (RT-FIFO) previously created with a call to rtf_create(3). fifo is the ID with which the RT-FIFO was created. buf is the block of data to be filled with the received bytes, while count is the size of the block in bytes. This mechanism is available only to realtime tasks; Linux processes use a read(2) from the corresponding fifo device to dequeue data from a fifo. Similarly, Linux processes use write(2) or similar functions to write the data to be read via rtf_put by a realtime task.

rtf_get is often used in conjunction with rtf_create_handler to process data received asynchronously from a Linux process. A handler is installed via rtf_create_handler; this handler calls rtf_get to receive any data present in the RT-FIFO as it becomes available. In this way, polling is not necessary; the handler is called only when data is present in the fifo.

The RT-FIFO is a mechanism, implemented as a character device, to communicate between realtime tasks and ordinary Linux processes. The rtf_* functions are used by the realtime tasks; Linux processes use standard character device access functions such as read(2), write(2) and select(2).


On success, the size of the received data block is returned. Note that this value may be less then count if count bytes are not available in the fifo. On failure, a negative value is returned as described below.



fifo is greater than or equal to RTF_NO.


fifo is not a valid RT-FIFO identifier.


rtf_get is available in PSC, the user-level real-time signal library. It can be called from handlers installed via rtlinux_sigaction(3).


UNIX spec read(2), rtf_create(3), rtf_create_handler(3), rtf_destroy(3), rtf_put(3), UNIX spec write(2)

1997 Jerry Epplin.

Modifications for RTLinux 2.x and 3.x by Michael Barabanov. 2001 FSMLabs Inc.

All rights reserved.