On Mon, 2011-02-21 at 18:54 +0100, varname wrote: > All, > > trying to write a simple producer / consumer using message pipes in > the native API, this phrase from the documentation (found here [1]) > confuses me: > > "-EPIPE is returned if the associated special device is not yet open." > > It's not so much the sentence itself, but more the fact that I'm not > getting that return value from rt_pipe_stream() when streaming bytes > to a RT_PIPE that hasn't had its "special device" opened in secondary > domain. > > I've attached a modified trivial-periodic.c that demonstrates what I'm > seeing. Afaik there is nothing open(2)-ing the /dev/rtp9 in the > secondary domain. All writes succeed, up to about write 31 (*1024), > after which all writes return 0. > > [..] > wrote: 1024, res: 1024 > wrote: 1024, res: 948 > wrote: 1024, res: 0 > wrote: 1024, res: 0 > [..] > > Is the documentation incorrect, or am I misunderstanding something?
The doc is wrong (former implementation, 2.1.x series), the pipe services do buffer real-time output until the special device is eventually opened starting with Xenomai 2.2.x. Since you are using rt_pipe_stream(), the output is directed to an internal buffer until there is no more space there, which causes the final 0-byte returns. So everything looks ok, except the doc. > > Related info: > Xenomai: 2.5.5.2 > Kernel: 2.6.32.26 > > [1] > http://www.xenomai.org/documentation/trunk/html/api/group__pipe.html#gb4d85ecda7675a75611500070c28b22e > _______________________________________________ > Xenomai-help mailing list > [email protected] > https://mail.gna.org/listinfo/xenomai-help -- Philippe. _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
