Sebastian Smolorz wrote:

I've spotted a -- in my view -- strange behaviour of RT pipes in the
native skin. The scenario is as follows:

A RT task creates a RT pipe and writes some bytes into it. A NRT
counterpart reads from this pipe, but not all bytes. Afterwards, the RT
task deletes the pipe.

Now the program is re-run: RT task creates the pipe, writes some bytes,
and the NRT part reads some bytes, but begins with the old ones which
weren't read during the first run of the program.

Now my question: Is this behaviour intentional?


 If it is then I see the
following problem: A task which calls rt_pipe_create() cannot be sure that
the pipe is empty. So it should be able to clear the pipe before use but I
found no function that allows a RT task to clear the pipe.

ioctl(fd,XNPIPEIOC_FLUSH,0) would do, but still, we should clear the output queue when closing the kernel side. In the same vein, closing the user-space side does not clear the input queue that feeds the kernel side. Thanks for spotting this.


Xenomai-core mailing list



Xenomai-core mailing list

Reply via email to