* [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.