On 11/03/2014 09:03 PM, Gilles Chanteperdrix wrote:
> On Mon, Nov 03, 2014 at 09:01:32PM +0100, Philippe Gerum wrote:
>> On 11/03/2014 07:37 PM, Steve M. Robbins wrote:
>>> On Mon, Nov 03, 2014 at 05:29:53PM +0100, Philippe Gerum wrote:
>>>
>>>> Just to make sure we are on the same page, as Dietmar mentioned in an
>>>> earlier mail, read() as implemented by the rt-pipe driver only returns
>>>> _one_ message at a time, although > 1 could be pending. One has to
>>>> iterate over a read() loop using a non-blocking fd on the /dev/rtp
>>>> device to get them all.
>>>
>>> Aha!  Thanks (and to Dietmar).  I completely missed this fact.  I'll
>>> go re-write the read as a loop and see if it works better.  I should read
>>> until the read() returns 0 (bytes read)?
>>>
>>
>> Until you get -1 with errno == EWOULDBLOCK. Zero would rather mean that
>> the other end of pipe has been disconnected, just like with a regular FIFO.
>>
> 
> Just a stupid question: should not calling select then read make as
> long as there are some messages to read?
> 

That would be the normal option, but Steve observes issues with this
pattern, we are trying to find out whether a loss of event notification
might be at work in the poll() handler basically. I still can't see it
reading the code though, but we cannot rule out any option at this stage.

-- 
Philippe.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to