* [Xenomai-help] IDDP send-receive example emits SIGXCPU signal
@ 2011-11-11 7:04 Guvenc Gulce
2011-11-11 11:43 ` Gilles Chanteperdrix
0 siblings, 1 reply; 4+ messages in thread
From: Guvenc Gulce @ 2011-11-11 7:04 UTC (permalink / raw)
To: xenomai@xenomai.org
Hi
My environment looks like the following:
Xenomai 2.5.6
Used skin: Posix
Kernel 2.6.35.3
Target Environment: ARM
I have compiled the example iddp-sendrecv which can be found under /examples/rtdm/profiles/ipc
(http://www.xenomai.org/documentation/xenomai-head/html/api/iddp-sendrecv_8c-example.html )
with the existing makefile under the same directory. The binary seems to be linking ok with the
xenomai libraries as you can also see here:
arm-linux-readelf -d iddp-sendrecv
Dynamic section at offset 0x1ed8 contains 32 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libpthread_rt.so.1]
0x00000001 (NEEDED) Shared library: [libxenomai.so.0]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [librt.so.1]
0x00000001 (NEEDED) Shared library: [librtdm.so.1]
0x00000001 (NEEDED) Shared library: [librtdk.so.0]
0x00000001 (NEEDED) Shared library: [libc.so.6]
In order to test the real-timeliness of this piece of binary, I have added
one line of code to the beginning of the each thread (client and server)
pthread_set_mode_np(0, PTHREAD_WARNSW);
so that any switch from Primary to Secondary will be reported with a
SIGXCPU. My expectation was that I wouldnt see any switch to secondary
mode as IDDP is supposed to work between real time threads without hurting
their real-timeliness.
But I do get the SIGXCPU after adding the PTHREAD_WARNSW and the
gdb output says
Program received signal SIGXCPU, CPU time limit exceeded.
[Switching to Thread 0x2bc83470 (LWP 3401)]
0x2aad9894 in __wrap_socket () from /usr/xenomai/lib/libpthread_rt.so.1
so it looks like the __wrap_socket call in the posix skin hurts the realtimeliness
of the threads when using IDDP. Do you have any idea why this may be
happening ?
If we look deeper in the posix skin where __wrap_socket is implemented
ret = XENOMAI_SKINCALL3(__rtdm_muxid,
__rtdm_socket,
protocol_family, socket_type, protocol);
if (ret >= 0)
ret += __rtdm_fd_start;
else if (ret == -EAFNOSUPPORT || ret == -ENOSYS) {
ret = __real_socket(protocol_family, socket_type, protocol);
if (ret >= __rtdm_fd_start) {
__real_close(ret);
errno = -EMFILE;
ret = -1;
}
looks like XENOMAI_SKINCALL3 macro is failing for some reason but I can't
explain this behavior as I am using the example code linked with the correct
xenomai libraries. Any help would be highly appreciated.
Thanks in advance
Guvenc
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Xenomai-help] IDDP send-receive example emits SIGXCPU signal
2011-11-11 7:04 [Xenomai-help] IDDP send-receive example emits SIGXCPU signal Guvenc Gulce
@ 2011-11-11 11:43 ` Gilles Chanteperdrix
2011-11-23 8:31 ` Guvenc Gulce
0 siblings, 1 reply; 4+ messages in thread
From: Gilles Chanteperdrix @ 2011-11-11 11:43 UTC (permalink / raw)
To: Guvenc Gulce; +Cc: xenomai@xenomai.org
On 11/11/2011 08:04 AM, Guvenc Gulce wrote:
> looks like XENOMAI_SKINCALL3 macro is failing for some reason but I can't
>
> explain this behavior as I am using the example code linked with the correct
>
> xenomai libraries. Any help would be highly appreciated.
Do you have support for iddp sockets enabled in kernel configuration? If
yes, do you have the same issue with xenomai 2.6.0?
--
Gilles.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Xenomai-help] IDDP send-receive example emits SIGXCPU signal
2011-11-11 11:43 ` Gilles Chanteperdrix
@ 2011-11-23 8:31 ` Guvenc Gulce
2011-11-23 9:42 ` Philippe Gerum
0 siblings, 1 reply; 4+ messages in thread
From: Guvenc Gulce @ 2011-11-23 8:31 UTC (permalink / raw)
To: xenomai@xenomai.org
Yes.. I have enabled the support for iddp sockets in the kernel configuration. It looks like that
it works with xenomai 2.6.0 when I enable the
pthread_set_mode_np(0, PTHREAD_WARNSW);
after the socket() and bind() calls. (tested again with the example code from xenomai)
My question is:
Is it designed that way that the calls socket() and bind() for IDDP cause a switch to
secondary mode and the calls recvfrom() and sendto() do not ? In other words
does the real-timeliness guarantee exist only for recvfrom() and sendto() ?
Thanks & Regards
Guvenc
----- Original Message -----
From: Gilles Chanteperdrix <gilles.chanteperdrix@domain.hid>
To: Guvenc Gulce <gulceg@domain.hid>
Cc: "xenomai@xenomai.org" <xenomai@xenomai.org>
Sent: Friday, November 11, 2011 12:43 PM
Subject: Re: [Xenomai-help] IDDP send-receive example emits SIGXCPU signal
On 11/11/2011 08:04 AM, Guvenc Gulce wrote:
> looks like XENOMAI_SKINCALL3 macro is failing for some reason but I can't
>
> explain this behavior as I am using the example code linked with the correct
>
> xenomai libraries. Any help would be highly appreciated.
Do you have support for iddp sockets enabled in kernel configuration? If
yes, do you have the same issue with xenomai 2.6.0?
--
Gilles.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Xenomai-help] IDDP send-receive example emits SIGXCPU signal
2011-11-23 8:31 ` Guvenc Gulce
@ 2011-11-23 9:42 ` Philippe Gerum
0 siblings, 0 replies; 4+ messages in thread
From: Philippe Gerum @ 2011-11-23 9:42 UTC (permalink / raw)
To: xenomai
On 11/23/2011 09:31 AM, Guvenc Gulce wrote:
> Yes.. I have enabled the support for iddp sockets in the kernel configuration. It looks like that
>
> it works with xenomai 2.6.0 when I enable the
>
> pthread_set_mode_np(0, PTHREAD_WARNSW);
> after the socket() and bind() calls. (tested again with the example code from xenomai)
>
> My question is:
>
> Is it designed that way that the calls socket() and bind() for IDDP cause a switch to
>
> secondary mode and the calls recvfrom() and sendto() do not ? In other words
>
> does the real-timeliness guarantee exist only for recvfrom() and sendto() ?
No. socket() or bind() have no reason to switch to secondary mode,
unless socket() fails for the AF_RTIPC domain, in which case the call is
routed to the regular kernel to handle the address family. You not only
need to enable IDDP in the kernel, but you also have to wrap POSIX calls
to libpthread_rt services.
If socket(AF_RTIPC, ...) failed reaching Xenomai/RTDM, then it will also
fail with the regular kernel, and this call will return an error.
>
>
> Thanks& Regards
>
> Guvenc
>
>
>
>
> ----- Original Message -----
> From: Gilles Chanteperdrix<gilles.chanteperdrix@xenomai.org>
> To: Guvenc Gulce<gulceg@domain.hid>
> Cc: "xenomai@xenomai.org"<xenomai@xenomai.org>
> Sent: Friday, November 11, 2011 12:43 PM
> Subject: Re: [Xenomai-help] IDDP send-receive example emits SIGXCPU signal
>
> On 11/11/2011 08:04 AM, Guvenc Gulce wrote:
>> looks like XENOMAI_SKINCALL3 macro is failing for some reason but I can't
>>
>> explain this behavior as I am using the example code linked with the correct
>>
>> xenomai libraries. Any help would be highly appreciated.
>
> Do you have support for iddp sockets enabled in kernel configuration? If
> yes, do you have the same issue with xenomai 2.6.0?
>
--
Philippe.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-11-23 9:42 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-11 7:04 [Xenomai-help] IDDP send-receive example emits SIGXCPU signal Guvenc Gulce
2011-11-11 11:43 ` Gilles Chanteperdrix
2011-11-23 8:31 ` Guvenc Gulce
2011-11-23 9:42 ` 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.