On Wed, 9 Nov 2005, Philippe Gerum wrote:
> Philippe Gerum wrote:
> > Sebastian Smolorz wrote:
> >> Hi,
> >> 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?
> > Nope.
> > 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.
> Ok, fixed.
Thanks, now it works! :-)
Xenomai-core mailing list