All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai] Xddp protocol: question of one example
@ 2013-12-18 23:37 Leopold Palomo-Avellaneda
  2013-12-20 10:13 ` Philippe Gerum
  0 siblings, 1 reply; 4+ messages in thread
From: Leopold Palomo-Avellaneda @ 2013-12-18 23:37 UTC (permalink / raw)
  To: xenomai

Hi,

I'm developing an application that need (as always) interchange data between a realtime part and non-realtime.

Looking on the documentation and surfing on the web I have found interesting for my app the examples of xddp protocol. Some time ago, there was an interesting mail about it [1].

There, the original author ask one thing that I would like to be sure that I understood. On the examples, the realtime thread uses the function recvfrom() to receive data from the non-rt thread.

In the mail, the original author asked about make recvfrom 
call non-blocking in xddp context, and *Philippe Gerum* answered that 
MSG_DONTWAIT should be set in flags.

So, my question is that using that flag, some code like this:


/* Read back packets echoed by the regular thread */
ret = recvfrom(s, buf, sizeof(buf), 0, NULL, 0);
if(ret <= 0)
    fail("recvfrom");

recvfrom will not be blocked, but it will return 0?

May I understood that if there's data on the sockect recvfrom will
return something and if no, it would not be blocked and return something?

Thanks in advance,

Leopold

[1] http://www.xenomai.org/pipermail/xenomai/2010-February/019364.html

-- 
--
Linux User 152692     PGP: 0xF944807E
Catalonia
-------------------------------------
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Xenomai] Xddp protocol: question of one example
  2013-12-18 23:37 [Xenomai] Xddp protocol: question of one example Leopold Palomo-Avellaneda
@ 2013-12-20 10:13 ` Philippe Gerum
  2013-12-20 12:42   ` Leopold Palomo-Avellaneda
  0 siblings, 1 reply; 4+ messages in thread
From: Philippe Gerum @ 2013-12-20 10:13 UTC (permalink / raw)
  To: Leopold Palomo-Avellaneda, xenomai

On 12/19/2013 12:37 AM, Leopold Palomo-Avellaneda wrote:
> Hi,
>
> I'm developing an application that need (as always) interchange data between a realtime part and non-realtime.
>
> Looking on the documentation and surfing on the web I have found interesting for my app the examples of xddp protocol. Some time ago, there was an interesting mail about it [1].
>
> There, the original author ask one thing that I would like to be sure that I understood. On the examples, the realtime thread uses the function recvfrom() to receive data from the non-rt thread.
>
> In the mail, the original author asked about make recvfrom
> call non-blocking in xddp context, and *Philippe Gerum* answered that
> MSG_DONTWAIT should be set in flags.
>
> So, my question is that using that flag, some code like this:
>
>
> /* Read back packets echoed by the regular thread */
> ret = recvfrom(s, buf, sizeof(buf), 0, NULL, 0);
> if(ret <= 0)
>      fail("recvfrom");
>
> recvfrom will not be blocked, but it will return 0?
>
> May I understood that if there's data on the sockect recvfrom will
> return something and if no, it would not be blocked and return something?
>

Standard behavior when no data present: immediate return with ret = -1, 
errno = EWOULDBLOCK/EAGAIN.

-- 
Philippe.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Xenomai] Xddp protocol: question of one example
  2013-12-20 10:13 ` Philippe Gerum
@ 2013-12-20 12:42   ` Leopold Palomo-Avellaneda
  2013-12-20 14:49     ` Philippe Gerum
  0 siblings, 1 reply; 4+ messages in thread
From: Leopold Palomo-Avellaneda @ 2013-12-20 12:42 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: xenomai

A Divendres, 20 de desembre de 2013, Philippe Gerum va escriure:
> On 12/19/2013 12:37 AM, Leopold Palomo-Avellaneda wrote:
> > Hi,
> >
> > I'm developing an application that need (as always) interchange data 
between a realtime part and non-realtime.
> >
> > Looking on the documentation and surfing on the web I have found 
interesting for my app the examples of xddp protocol. Some time ago, there was 
an interesting mail about it [1].
> >
> > There, the original author ask one thing that I would like to be sure that 
I understood. On the examples, the realtime thread uses the function 
recvfrom() to receive data from the non-rt thread.
> >
> > In the mail, the original author asked about make recvfrom
> > call non-blocking in xddp context, and *Philippe Gerum* answered that
> > MSG_DONTWAIT should be set in flags.
> >
> > So, my question is that using that flag, some code like this:
> >
> >
> > /* Read back packets echoed by the regular thread */
> > ret = recvfrom(s, buf, sizeof(buf), 0, NULL, 0);
> > if(ret <= 0)
> >      fail("recvfrom");
> >
> > recvfrom will not be blocked, but it will return 0?
> >
> > May I understood that if there's data on the sockect recvfrom will
> > return something and if no, it would not be blocked and return something?
> >
> 
> Standard behavior when no data present: immediate return with ret = -1, 
> errno = EWOULDBLOCK/EAGAIN.

Ok, 

if you are writing some data (some bytes) in the socket, can I trust that 
recvfrom will return -1 until ALL data is transferred?

Regards,

Leopold







-- 
--
Linux User 152692
Catalonia
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://www.xenomai.org/pipermail/xenomai/attachments/20131220/e7764858/attachment.sig>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Xenomai] Xddp protocol: question of one example
  2013-12-20 12:42   ` Leopold Palomo-Avellaneda
@ 2013-12-20 14:49     ` Philippe Gerum
  0 siblings, 0 replies; 4+ messages in thread
From: Philippe Gerum @ 2013-12-20 14:49 UTC (permalink / raw)
  To: Leopold Palomo-Avellaneda; +Cc: xenomai

On 12/20/2013 01:42 PM, Leopold Palomo-Avellaneda wrote:
> A Divendres, 20 de desembre de 2013, Philippe Gerum va escriure:
>> On 12/19/2013 12:37 AM, Leopold Palomo-Avellaneda wrote:
>>> Hi,
>>>
>>> I'm developing an application that need (as always) interchange data
> between a realtime part and non-realtime.
>>>
>>> Looking on the documentation and surfing on the web I have found
> interesting for my app the examples of xddp protocol. Some time ago, there was
> an interesting mail about it [1].
>>>
>>> There, the original author ask one thing that I would like to be sure that
> I understood. On the examples, the realtime thread uses the function
> recvfrom() to receive data from the non-rt thread.
>>>
>>> In the mail, the original author asked about make recvfrom
>>> call non-blocking in xddp context, and *Philippe Gerum* answered that
>>> MSG_DONTWAIT should be set in flags.
>>>
>>> So, my question is that using that flag, some code like this:
>>>
>>>
>>> /* Read back packets echoed by the regular thread */
>>> ret = recvfrom(s, buf, sizeof(buf), 0, NULL, 0);
>>> if(ret <= 0)
>>>       fail("recvfrom");
>>>
>>> recvfrom will not be blocked, but it will return 0?
>>>
>>> May I understood that if there's data on the sockect recvfrom will
>>> return something and if no, it would not be blocked and return something?
>>>
>>
>> Standard behavior when no data present: immediate return with ret = -1,
>> errno = EWOULDBLOCK/EAGAIN.
>
> Ok,
>
> if you are writing some data (some bytes) in the socket, can I trust that
> recvfrom will return -1 until ALL data is transferred?
>

Yes, guaranteed for all nrt -> rt transfers. This also applies the other 
way, unless MSG_MORE is given to sendmsg() with streaming mode enabled 
for the socket, and the message spans multiple output buffers (see 
setsockopt(XDDP_BUFSZ) for enabling streaming mode).

-- 
Philippe.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-12-20 14:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-18 23:37 [Xenomai] Xddp protocol: question of one example Leopold Palomo-Avellaneda
2013-12-20 10:13 ` Philippe Gerum
2013-12-20 12:42   ` Leopold Palomo-Avellaneda
2013-12-20 14:49     ` Philippe Gerum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.