* [Xenomai] Xenomai 3 - no skin detected in program
@ 2015-02-04 8:55 Huy Cong Vu
2015-02-04 9:13 ` Philippe Gerum
0 siblings, 1 reply; 11+ messages in thread
From: Huy Cong Vu @ 2015-02-04 8:55 UTC (permalink / raw)
To: xenomai
Hello everyone,
I recently try to run an application compiled in native skin of Xenomai 3. When trying to run the binary, these line appeared:
WARNING: [main] no skin detected in program
BUG: [main] initialization failed, EINVAL
I know that this is a cooperplate_init() warning when trying to initialize native skin, but I don't understand the reason why:
if (pvlist_empty(&skins)){
warning("no skin detected in program");
ret = -EINVAL;
goto fail;
}
In my main(), there are still native API calls:
rt_print_auto_init(1);
rt_task_spawn(...);
rt_task_join(...);
rt_task_delete(...);
with mlockall also just to make sure, even I know that is pre-initialize since Xenomai 2.6.
I have xenomai-3-next patched on linux-3.14.17, here are my compilation flags:
cflags:
xeno-config --alchemy --cflags
xeno-config --rtdm --cflags
ldflags:
xeno-config --alchemy --ldflags
xeno-config --rtdm --ldflags
This issue is not reproduced with posix skin, I know that there are a mechanism change in the way Xenomai invoke function calls other than POSIX (alchemy, vxworks...):
https://xenomai.org//migrating-from-xenomai-2-x-to-3-x/#Copperplate_auto-initialization
Is this related with my issue? Is there anything I should add to my initialization process that I didn't know about?
Thanks for your time,
--
Huy Cong
Wandercraft SAS
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-04 8:55 [Xenomai] Xenomai 3 - no skin detected in program Huy Cong Vu
@ 2015-02-04 9:13 ` Philippe Gerum
2015-02-04 11:07 ` Huy Cong Vu
0 siblings, 1 reply; 11+ messages in thread
From: Philippe Gerum @ 2015-02-04 9:13 UTC (permalink / raw)
To: Huy Cong Vu, xenomai
On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
> Hello everyone,
> I recently try to run an application compiled in native skin of Xenomai 3. When trying to run the binary, these line appeared:
> WARNING: [main] no skin detected in program
> BUG: [main] initialization failed, EINVAL
> I know that this is a cooperplate_init() warning when trying to initialize native skin, but I don't understand the reason why:
> if (pvlist_empty(&skins)){
> warning("no skin detected in program");
> ret = -EINVAL;
> goto fail;
> }
It seems that your application was not linked against libalchemy.so.
When API libraries are properly linked in, internal constructor routines
populate this list. POSIX support is built-in within the Cobalt
interface, so it won't appear here though.
You may want to check this with ldd.
> In my main(), there are still native API calls:
> rt_print_auto_init(1);
> rt_task_spawn(...);
> rt_task_join(...);
> rt_task_delete(...);
> with mlockall also just to make sure, even I know that is pre-initialize since Xenomai 2.6.
> I have xenomai-3-next patched on linux-3.14.17, here are my compilation flags:
> cflags:
> xeno-config --alchemy --cflags
> xeno-config --rtdm --cflags
> ldflags:
> xeno-config --alchemy --ldflags
> xeno-config --rtdm --ldflags
You should not mention --rtdm for userland apps, this is useless for
Xenomai 3. This has been kept for compatibility purpose with existing
application Makefiles targeting Xenomai 2.x.
>
> This issue is not reproduced with posix skin, I know that there are a mechanism change in the way Xenomai invoke function calls other than POSIX (alchemy, vxworks...):
> https://xenomai.org//migrating-from-xenomai-2-x-to-3-x/#Copperplate_auto-initialization
> Is this related with my issue? Is there anything I should add to my initialization process that I didn't know about?
> Thanks for your time,
>
Check lib/alchemy/testsuite for a working Makefile you could derive
yours from.
--
Philippe.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-04 9:13 ` Philippe Gerum
@ 2015-02-04 11:07 ` Huy Cong Vu
2015-02-04 11:40 ` Huy Cong Vu
2015-02-04 13:16 ` Philippe Gerum
0 siblings, 2 replies; 11+ messages in thread
From: Huy Cong Vu @ 2015-02-04 11:07 UTC (permalink / raw)
To: Philippe Gerum; +Cc: xenomai
----- Mail original -----
> De: "Philippe Gerum" <rpm@xenomai.org>
> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
> Envoyé: Mercredi 4 Février 2015 10:13:14
> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>> Hello everyone,
>> I recently try to run an application compiled in native skin of Xenomai 3. When
>> trying to run the binary, these line appeared:
>> WARNING: [main] no skin detected in program
>> BUG: [main] initialization failed, EINVAL
>> I know that this is a cooperplate_init() warning when trying to initialize
>> native skin, but I don't understand the reason why:
>> if (pvlist_empty(&skins)){
>> warning("no skin detected in program");
>> ret = -EINVAL;
>> goto fail;
>> }
>
> It seems that your application was not linked against libalchemy.so.
> When API libraries are properly linked in, internal constructor routines
> populate this list. POSIX support is built-in within the Cobalt
> interface, so it won't appear here though.
>
> You may want to check this with ldd.
>
Indeed, I'm working on the linking option to find out why, it seems that -ffunctions-sections and -Wl,--gc-sections hides the -lalchemy flag so I removed it.
>> In my main(), there are still native API calls:
>> rt_print_auto_init(1);
>> rt_task_spawn(...);
>> rt_task_join(...);
>> rt_task_delete(...);
>> with mlockall also just to make sure, even I know that is pre-initialize since
>> Xenomai 2.6.
>> I have xenomai-3-next patched on linux-3.14.17, here are my compilation flags:
>> cflags:
>> xeno-config --alchemy --cflags
>> xeno-config --rtdm --cflags
>> ldflags:
>> xeno-config --alchemy --ldflags
>> xeno-config --rtdm --ldflags
>
> You should not mention --rtdm for userland apps, this is useless for
> Xenomai 3. This has been kept for compatibility purpose with existing
> application Makefiles targeting Xenomai 2.x.
>
But what if one of my static library calls from rtdm? Which flags should I add then if I can't use xeno-config --rtdm anymore?
>>
>> This issue is not reproduced with posix skin, I know that there are a mechanism
>> change in the way Xenomai invoke function calls other than POSIX (alchemy,
>> vxworks...):
>> https://xenomai.org//migrating-from-xenomai-2-x-to-3-x/#Copperplate_auto-initialization
>> Is this related with my issue? Is there anything I should add to my
>> initialization process that I didn't know about?
>> Thanks for your time,
>>
>
> Check lib/alchemy/testsuite for a working Makefile you could derive
> yours from.
>
> --
> Philippe.
--
Huy Cong
Wandercraft SAS
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-04 11:07 ` Huy Cong Vu
@ 2015-02-04 11:40 ` Huy Cong Vu
2015-02-04 13:21 ` Philippe Gerum
2015-02-04 13:16 ` Philippe Gerum
1 sibling, 1 reply; 11+ messages in thread
From: Huy Cong Vu @ 2015-02-04 11:40 UTC (permalink / raw)
To: Philippe Gerum; +Cc: xenomai
----- Mail original -----
> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
> À: "Philippe Gerum" <rpm@xenomai.org>
> Cc: xenomai@xenomai.org
> Envoyé: Mercredi 4 Février 2015 12:07:54
> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
> ----- Mail original -----
>> De: "Philippe Gerum" <rpm@xenomai.org>
>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>> Envoyé: Mercredi 4 Février 2015 10:13:14
>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>
>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>> Hello everyone,
>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>> trying to run the binary, these line appeared:
>>> WARNING: [main] no skin detected in program
>>> BUG: [main] initialization failed, EINVAL
>>> I know that this is a cooperplate_init() warning when trying to initialize
>>> native skin, but I don't understand the reason why:
>>> if (pvlist_empty(&skins)){
>>> warning("no skin detected in program");
>>> ret = -EINVAL;
>>> goto fail;
>>> }
>>
>> It seems that your application was not linked against libalchemy.so.
>> When API libraries are properly linked in, internal constructor routines
>> populate this list. POSIX support is built-in within the Cobalt
>> interface, so it won't appear here though.
>>
I change the order of the linker flags, now my app is linked against libalchemy.so, but this message shown up:
symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol: main
I guess that it stills a problem due to the linker flag, am I right?
>> You may want to check this with ldd.
>>
>
> Indeed, I'm working on the linking option to find out why, it seems that
> -ffunctions-sections and -Wl,--gc-sections hides the -lalchemy flag so I
> removed it.
>
>>> In my main(), there are still native API calls:
>>> rt_print_auto_init(1);
>>> rt_task_spawn(...);
>>> rt_task_join(...);
>>> rt_task_delete(...);
>>> with mlockall also just to make sure, even I know that is pre-initialize since
>>> Xenomai 2.6.
>>> I have xenomai-3-next patched on linux-3.14.17, here are my compilation flags:
>>> cflags:
>>> xeno-config --alchemy --cflags
>>> xeno-config --rtdm --cflags
>>> ldflags:
>>> xeno-config --alchemy --ldflags
>>> xeno-config --rtdm --ldflags
>>
>> You should not mention --rtdm for userland apps, this is useless for
>> Xenomai 3. This has been kept for compatibility purpose with existing
>> application Makefiles targeting Xenomai 2.x.
>>
>
> But what if one of my static library calls from rtdm? Which flags should I add
> then if I can't use xeno-config --rtdm anymore?
>
>>>
>>> This issue is not reproduced with posix skin, I know that there are a mechanism
>>> change in the way Xenomai invoke function calls other than POSIX (alchemy,
>>> vxworks...):
>>> https://xenomai.org//migrating-from-xenomai-2-x-to-3-x/#Copperplate_auto-initialization
>>> Is this related with my issue? Is there anything I should add to my
>>> initialization process that I didn't know about?
>>> Thanks for your time,
>>>
>>
>> Check lib/alchemy/testsuite for a working Makefile you could derive
>> yours from.
>>
>> --
>> Philippe.
>
> --
> Huy Cong
> Wandercraft SAS
>
> _______________________________________________
> Xenomai mailing list
> Xenomai@xenomai.org
> http://www.xenomai.org/mailman/listinfo/xenomai
--
Huy Cong
Wandercraft SAS
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-04 11:07 ` Huy Cong Vu
2015-02-04 11:40 ` Huy Cong Vu
@ 2015-02-04 13:16 ` Philippe Gerum
1 sibling, 0 replies; 11+ messages in thread
From: Philippe Gerum @ 2015-02-04 13:16 UTC (permalink / raw)
To: Huy Cong Vu; +Cc: xenomai
On 02/04/2015 12:07 PM, Huy Cong Vu wrote:
>
>
> ----- Mail original -----
>> De: "Philippe Gerum" <rpm@xenomai.org>
>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>> Envoyé: Mercredi 4 Février 2015 10:13:14
>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>
>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>> Hello everyone,
>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>> trying to run the binary, these line appeared:
>>> WARNING: [main] no skin detected in program
>>> BUG: [main] initialization failed, EINVAL
>>> I know that this is a cooperplate_init() warning when trying to initialize
>>> native skin, but I don't understand the reason why:
>>> if (pvlist_empty(&skins)){
>>> warning("no skin detected in program");
>>> ret = -EINVAL;
>>> goto fail;
>>> }
>>
>> It seems that your application was not linked against libalchemy.so.
>> When API libraries are properly linked in, internal constructor routines
>> populate this list. POSIX support is built-in within the Cobalt
>> interface, so it won't appear here though.
>>
>> You may want to check this with ldd.
>>
>
> Indeed, I'm working on the linking option to find out why, it seems that -ffunctions-sections and -Wl,--gc-sections hides the -lalchemy flag so I removed it.
>
>>> In my main(), there are still native API calls:
>>> rt_print_auto_init(1);
>>> rt_task_spawn(...);
>>> rt_task_join(...);
>>> rt_task_delete(...);
>>> with mlockall also just to make sure, even I know that is pre-initialize since
>>> Xenomai 2.6.
>>> I have xenomai-3-next patched on linux-3.14.17, here are my compilation flags:
>>> cflags:
>>> xeno-config --alchemy --cflags
>>> xeno-config --rtdm --cflags
>>> ldflags:
>>> xeno-config --alchemy --ldflags
>>> xeno-config --rtdm --ldflags
>>
>> You should not mention --rtdm for userland apps, this is useless for
>> Xenomai 3. This has been kept for compatibility purpose with existing
>> application Makefiles targeting Xenomai 2.x.
>>
>
> But what if one of my static library calls from rtdm? Which flags should I add then if I can't use xeno-config --rtdm anymore?
>
None, it's available as a built-in feature of the POSIX API over cobalt.
--
Philippe.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-04 11:40 ` Huy Cong Vu
@ 2015-02-04 13:21 ` Philippe Gerum
2015-02-05 14:05 ` Huy Cong Vu
0 siblings, 1 reply; 11+ messages in thread
From: Philippe Gerum @ 2015-02-04 13:21 UTC (permalink / raw)
To: Huy Cong Vu; +Cc: xenomai
On 02/04/2015 12:40 PM, Huy Cong Vu wrote:
>
>
> ----- Mail original -----
>> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>> À: "Philippe Gerum" <rpm@xenomai.org>
>> Cc: xenomai@xenomai.org
>> Envoyé: Mercredi 4 Février 2015 12:07:54
>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>
>> ----- Mail original -----
>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>>> Envoyé: Mercredi 4 Février 2015 10:13:14
>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>
>>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>>> Hello everyone,
>>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>>> trying to run the binary, these line appeared:
>>>> WARNING: [main] no skin detected in program
>>>> BUG: [main] initialization failed, EINVAL
>>>> I know that this is a cooperplate_init() warning when trying to initialize
>>>> native skin, but I don't understand the reason why:
>>>> if (pvlist_empty(&skins)){
>>>> warning("no skin detected in program");
>>>> ret = -EINVAL;
>>>> goto fail;
>>>> }
>>>
>>> It seems that your application was not linked against libalchemy.so.
>>> When API libraries are properly linked in, internal constructor routines
>>> populate this list. POSIX support is built-in within the Cobalt
>>> interface, so it won't appear here though.
>>>
> I change the order of the linker flags, now my app is linked against libalchemy.so, but this message shown up:
> symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol: main
>
> I guess that it stills a problem due to the linker flag, am I right?
>
Yes. You seem to be using a set of flags with fine-grained tuning, some
of which might have an adverse effect on your linking stage. You should
start with the set output by xeno-config --ldflags --alchemy which are
known to work, then tune gradually as appropriate.
--
Philippe.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-04 13:21 ` Philippe Gerum
@ 2015-02-05 14:05 ` Huy Cong Vu
2015-02-05 14:42 ` Philippe Gerum
0 siblings, 1 reply; 11+ messages in thread
From: Huy Cong Vu @ 2015-02-05 14:05 UTC (permalink / raw)
To: Philippe Gerum; +Cc: xenomai
----- Mail original -----
> De: "Philippe Gerum" <rpm@xenomai.org>
> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
> Cc: xenomai@xenomai.org
> Envoyé: Mercredi 4 Février 2015 14:21:18
> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
> On 02/04/2015 12:40 PM, Huy Cong Vu wrote:
>>
>>
>> ----- Mail original -----
>>> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>> À: "Philippe Gerum" <rpm@xenomai.org>
>>> Cc: xenomai@xenomai.org
>>> Envoyé: Mercredi 4 Février 2015 12:07:54
>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>
>>> ----- Mail original -----
>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>>>> Envoyé: Mercredi 4 Février 2015 10:13:14
>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>
>>>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>>>> Hello everyone,
>>>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>>>> trying to run the binary, these line appeared:
>>>>> WARNING: [main] no skin detected in program
>>>>> BUG: [main] initialization failed, EINVAL
>>>>> I know that this is a cooperplate_init() warning when trying to initialize
>>>>> native skin, but I don't understand the reason why:
>>>>> if (pvlist_empty(&skins)){
>>>>> warning("no skin detected in program");
>>>>> ret = -EINVAL;
>>>>> goto fail;
>>>>> }
>>>>
>>>> It seems that your application was not linked against libalchemy.so.
>>>> When API libraries are properly linked in, internal constructor routines
>>>> populate this list. POSIX support is built-in within the Cobalt
>>>> interface, so it won't appear here though.
>>>>
>> I change the order of the linker flags, now my app is linked against
>> libalchemy.so, but this message shown up:
>> symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol:
>> main
>>
>> I guess that it stills a problem due to the linker flag, am I right?
>>
>
> Yes. You seem to be using a set of flags with fine-grained tuning, some
> of which might have an adverse effect on your linking stage. You should
> start with the set output by xeno-config --ldflags --alchemy which are
> known to work, then tune gradually as appropriate.
>
Hi Philippe,
I'm getting close to it, but it still left some undefined reference for rtdm functions.
I prepared a minimal test case attached in this email, which have only 1 call to rtdm_socket. The call to ldflags include only --cobalt, I don't know if its enough. And I can't find a testsuite file in alchemy sample list that have rtdm calls.
Can you take a look and tell me where I was wrong?
Thanks,
> --
> Philippe.
--
Huy Cong
Wandercraft SAS
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Makefile
Type: text/x-makefile
Size: 560 bytes
Desc: not available
URL: <http://www.xenomai.org/pipermail/xenomai/attachments/20150205/f82d3241/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rtdm_minimal.c
Type: text/x-c++src
Size: 907 bytes
Desc: not available
URL: <http://www.xenomai.org/pipermail/xenomai/attachments/20150205/f82d3241/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rtdm_minimal.h
Type: text/x-chdr
Size: 319 bytes
Desc: not available
URL: <http://www.xenomai.org/pipermail/xenomai/attachments/20150205/f82d3241/attachment.h>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-05 14:05 ` Huy Cong Vu
@ 2015-02-05 14:42 ` Philippe Gerum
2015-02-05 15:29 ` Huy Cong Vu
0 siblings, 1 reply; 11+ messages in thread
From: Philippe Gerum @ 2015-02-05 14:42 UTC (permalink / raw)
To: Huy Cong Vu; +Cc: xenomai
On 02/05/2015 03:05 PM, Huy Cong Vu wrote:
>
>
> ----- Mail original -----
>> De: "Philippe Gerum" <rpm@xenomai.org>
>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>> Cc: xenomai@xenomai.org
>> Envoyé: Mercredi 4 Février 2015 14:21:18
>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>
>> On 02/04/2015 12:40 PM, Huy Cong Vu wrote:
>>>
>>>
>>> ----- Mail original -----
>>>> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>>> À: "Philippe Gerum" <rpm@xenomai.org>
>>>> Cc: xenomai@xenomai.org
>>>> Envoyé: Mercredi 4 Février 2015 12:07:54
>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>
>>>> ----- Mail original -----
>>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>>>>> Envoyé: Mercredi 4 Février 2015 10:13:14
>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>
>>>>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>>>>> Hello everyone,
>>>>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>>>>> trying to run the binary, these line appeared:
>>>>>> WARNING: [main] no skin detected in program
>>>>>> BUG: [main] initialization failed, EINVAL
>>>>>> I know that this is a cooperplate_init() warning when trying to initialize
>>>>>> native skin, but I don't understand the reason why:
>>>>>> if (pvlist_empty(&skins)){
>>>>>> warning("no skin detected in program");
>>>>>> ret = -EINVAL;
>>>>>> goto fail;
>>>>>> }
>>>>>
>>>>> It seems that your application was not linked against libalchemy.so.
>>>>> When API libraries are properly linked in, internal constructor routines
>>>>> populate this list. POSIX support is built-in within the Cobalt
>>>>> interface, so it won't appear here though.
>>>>>
>>> I change the order of the linker flags, now my app is linked against
>>> libalchemy.so, but this message shown up:
>>> symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol:
>>> main
>>>
>>> I guess that it stills a problem due to the linker flag, am I right?
>>>
>>
>> Yes. You seem to be using a set of flags with fine-grained tuning, some
>> of which might have an adverse effect on your linking stage. You should
>> start with the set output by xeno-config --ldflags --alchemy which are
>> known to work, then tune gradually as appropriate.
>>
>
> Hi Philippe,
>
> I'm getting close to it, but it still left some undefined reference for rtdm functions.
>
rtdm_socket() is a kernel-space API for inter-driver calls, socket() is
what you need for creating a RTDM socket endpoint in your application.
The Cobalt implementation will be used provided the linker is passed the
proper flags (which you Makefile does).
> I prepared a minimal test case attached in this email, which have only 1 call to rtdm_socket. The call to ldflags include only --cobalt, I don't know if its enough. And I can't find a testsuite file in alchemy sample list that have rtdm calls.
--cobalt is an alias to --posix, those switches are interchangeable. The
Makefile looks ok. See demo/posix/cobalt for examples using RTDM sockets
for communicating with the real-time IPC driver.
>
> Can you take a look and tell me where I was wrong?
>
> Thanks,
>
>
>> --
>> Philippe.
>
--
Philippe.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-05 14:42 ` Philippe Gerum
@ 2015-02-05 15:29 ` Huy Cong Vu
2015-02-05 15:48 ` Philippe Gerum
2015-02-05 15:53 ` Philippe Gerum
0 siblings, 2 replies; 11+ messages in thread
From: Huy Cong Vu @ 2015-02-05 15:29 UTC (permalink / raw)
To: Philippe Gerum; +Cc: xenomai
----- Mail original -----
> De: "Philippe Gerum" <rpm@xenomai.org>
> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
> Cc: xenomai@xenomai.org
> Envoyé: Jeudi 5 Février 2015 15:42:15
> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
> On 02/05/2015 03:05 PM, Huy Cong Vu wrote:
>>
>>
>> ----- Mail original -----
>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>> Cc: xenomai@xenomai.org
>>> Envoyé: Mercredi 4 Février 2015 14:21:18
>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>
>>> On 02/04/2015 12:40 PM, Huy Cong Vu wrote:
>>>>
>>>>
>>>> ----- Mail original -----
>>>>> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>>>> À: "Philippe Gerum" <rpm@xenomai.org>
>>>>> Cc: xenomai@xenomai.org
>>>>> Envoyé: Mercredi 4 Février 2015 12:07:54
>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>
>>>>> ----- Mail original -----
>>>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>>>>>> Envoyé: Mercredi 4 Février 2015 10:13:14
>>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>>
>>>>>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>>>>>> Hello everyone,
>>>>>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>>>>>> trying to run the binary, these line appeared:
>>>>>>> WARNING: [main] no skin detected in program
>>>>>>> BUG: [main] initialization failed, EINVAL
>>>>>>> I know that this is a cooperplate_init() warning when trying to initialize
>>>>>>> native skin, but I don't understand the reason why:
>>>>>>> if (pvlist_empty(&skins)){
>>>>>>> warning("no skin detected in program");
>>>>>>> ret = -EINVAL;
>>>>>>> goto fail;
>>>>>>> }
>>>>>>
>>>>>> It seems that your application was not linked against libalchemy.so.
>>>>>> When API libraries are properly linked in, internal constructor routines
>>>>>> populate this list. POSIX support is built-in within the Cobalt
>>>>>> interface, so it won't appear here though.
>>>>>>
>>>> I change the order of the linker flags, now my app is linked against
>>>> libalchemy.so, but this message shown up:
>>>> symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol:
>>>> main
>>>>
>>>> I guess that it stills a problem due to the linker flag, am I right?
>>>>
>>>
>>> Yes. You seem to be using a set of flags with fine-grained tuning, some
>>> of which might have an adverse effect on your linking stage. You should
>>> start with the set output by xeno-config --ldflags --alchemy which are
>>> known to work, then tune gradually as appropriate.
>>>
>>
>> Hi Philippe,
>>
>> I'm getting close to it, but it still left some undefined reference for rtdm
>> functions.
>>
>
> rtdm_socket() is a kernel-space API for inter-driver calls, socket() is
> what you need for creating a RTDM socket endpoint in your application.
> The Cobalt implementation will be used provided the linker is passed the
> proper flags (which you Makefile does).
So that means I will always end up in calling socket() for all skins (alchemy or cobalt) and let the linker flags differs it in kernel space?
My app is then compilable. But now I have 2 differents behaviors with 2 skins in the same app:
ret1 = setsockopt();
ret2 = ioctl();
ret3 = bind();
cobalt (posix): ret1 = -1, ret2 = ret3 = 0;
alchemy (native): ret1 = 0, ret2 = ret3 = -1;
I put some #define NATIVE or POSIX in my app + xeno-config --alchemy or --cobalt to set flags.
Is there a known issue related to this, or it only occurs in my case?
>
>> I prepared a minimal test case attached in this email, which have only 1 call to
>> rtdm_socket. The call to ldflags include only --cobalt, I don't know if its
>> enough. And I can't find a testsuite file in alchemy sample list that have rtdm
>> calls.
>
> --cobalt is an alias to --posix, those switches are interchangeable. The
> Makefile looks ok. See demo/posix/cobalt for examples using RTDM sockets
> for communicating with the real-time IPC driver.
>
>>
>> Can you take a look and tell me where I was wrong?
>>
>> Thanks,
>>
>>
>>> --
>>> Philippe.
>>
>
>
> --
> Philippe.
--
Huy Cong
Wandercraft SAS
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-05 15:29 ` Huy Cong Vu
@ 2015-02-05 15:48 ` Philippe Gerum
2015-02-05 15:53 ` Philippe Gerum
1 sibling, 0 replies; 11+ messages in thread
From: Philippe Gerum @ 2015-02-05 15:48 UTC (permalink / raw)
To: Huy Cong Vu; +Cc: xenomai
On 02/05/2015 04:29 PM, Huy Cong Vu wrote:
>
>
> ----- Mail original -----
>> De: "Philippe Gerum" <rpm@xenomai.org>
>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>> Cc: xenomai@xenomai.org
>> Envoyé: Jeudi 5 Février 2015 15:42:15
>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>
>> On 02/05/2015 03:05 PM, Huy Cong Vu wrote:
>>>
>>>
>>> ----- Mail original -----
>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>>> Cc: xenomai@xenomai.org
>>>> Envoyé: Mercredi 4 Février 2015 14:21:18
>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>
>>>> On 02/04/2015 12:40 PM, Huy Cong Vu wrote:
>>>>>
>>>>>
>>>>> ----- Mail original -----
>>>>>> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>>>>> À: "Philippe Gerum" <rpm@xenomai.org>
>>>>>> Cc: xenomai@xenomai.org
>>>>>> Envoyé: Mercredi 4 Février 2015 12:07:54
>>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>>
>>>>>> ----- Mail original -----
>>>>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>>>>>>> Envoyé: Mercredi 4 Février 2015 10:13:14
>>>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>>>
>>>>>>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>>>>>>> Hello everyone,
>>>>>>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>>>>>>> trying to run the binary, these line appeared:
>>>>>>>> WARNING: [main] no skin detected in program
>>>>>>>> BUG: [main] initialization failed, EINVAL
>>>>>>>> I know that this is a cooperplate_init() warning when trying to initialize
>>>>>>>> native skin, but I don't understand the reason why:
>>>>>>>> if (pvlist_empty(&skins)){
>>>>>>>> warning("no skin detected in program");
>>>>>>>> ret = -EINVAL;
>>>>>>>> goto fail;
>>>>>>>> }
>>>>>>>
>>>>>>> It seems that your application was not linked against libalchemy.so.
>>>>>>> When API libraries are properly linked in, internal constructor routines
>>>>>>> populate this list. POSIX support is built-in within the Cobalt
>>>>>>> interface, so it won't appear here though.
>>>>>>>
>>>>> I change the order of the linker flags, now my app is linked against
>>>>> libalchemy.so, but this message shown up:
>>>>> symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol:
>>>>> main
>>>>>
>>>>> I guess that it stills a problem due to the linker flag, am I right?
>>>>>
>>>>
>>>> Yes. You seem to be using a set of flags with fine-grained tuning, some
>>>> of which might have an adverse effect on your linking stage. You should
>>>> start with the set output by xeno-config --ldflags --alchemy which are
>>>> known to work, then tune gradually as appropriate.
>>>>
>>>
>>> Hi Philippe,
>>>
>>> I'm getting close to it, but it still left some undefined reference for rtdm
>>> functions.
>>>
>>
>> rtdm_socket() is a kernel-space API for inter-driver calls, socket() is
>> what you need for creating a RTDM socket endpoint in your application.
>> The Cobalt implementation will be used provided the linker is passed the
>> proper flags (which you Makefile does).
>
> So that means I will always end up in calling socket() for all skins (alchemy or cobalt) and let the linker flags differs it in kernel space?
You should have a look at the related documentation to understand
how/when the Xenomai/cobalt implementation of a POSIX service (e.g.
socket, ioctl, setsockopt and friends) overrides the original glibc call:
http://xenomai.org/2014/08/porting-a-linux-application-to-xenomai-dual-kernel/#Under_the_hood_the_8211wrap_flag
> My app is then compilable. But now I have 2 differents behaviors with 2 skins in the same app:
>
> ret1 = setsockopt();
> ret2 = ioctl();
> ret3 = bind();
>
> cobalt (posix): ret1 = -1, ret2 = ret3 = 0;
> alchemy (native): ret1 = 0, ret2 = ret3 = -1;
>
There is no information I could use here. Which RTDM driver is
implementing the address family and protocol mentioned in the socket()
call, which socket option and ioctl request codes are you passing to
this RTDM driver via the setsockopt() and ioctl() calls, what is the
errno value for each failing call?
> I put some #define NATIVE or POSIX in my app + xeno-config --alchemy or --cobalt to set flags.
The whole thing has been designed in a way that should prevent such kind
of ugly #ifdefery. Definitely not the way to go.
> Is there a known issue related to this, or it only occurs in my case?
>
There is no known issue regarding RTDM sockets and their usage. Again,
you have access to several examples in demo/posix/cobalt illustrating
RTDM socket usage. You may want to have look there first.
>>
>>> I prepared a minimal test case attached in this email, which have only 1 call to
>>> rtdm_socket. The call to ldflags include only --cobalt, I don't know if its
>>> enough. And I can't find a testsuite file in alchemy sample list that have rtdm
>>> calls.
>>
>> --cobalt is an alias to --posix, those switches are interchangeable. The
>> Makefile looks ok. See demo/posix/cobalt for examples using RTDM sockets
>> for communicating with the real-time IPC driver.
>>
>>>
>>> Can you take a look and tell me where I was wrong?
>>>
>>> Thanks,
>>>
>>>
>>>> --
>>>> Philippe.
>>>
>>
>>
>> --
>> Philippe.
>
--
Philippe.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai] Xenomai 3 - no skin detected in program
2015-02-05 15:29 ` Huy Cong Vu
2015-02-05 15:48 ` Philippe Gerum
@ 2015-02-05 15:53 ` Philippe Gerum
1 sibling, 0 replies; 11+ messages in thread
From: Philippe Gerum @ 2015-02-05 15:53 UTC (permalink / raw)
To: Huy Cong Vu; +Cc: xenomai
On 02/05/2015 04:29 PM, Huy Cong Vu wrote:
>
>
> ----- Mail original -----
>> De: "Philippe Gerum" <rpm@xenomai.org>
>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>> Cc: xenomai@xenomai.org
>> Envoyé: Jeudi 5 Février 2015 15:42:15
>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>
>> On 02/05/2015 03:05 PM, Huy Cong Vu wrote:
>>>
>>>
>>> ----- Mail original -----
>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>>> Cc: xenomai@xenomai.org
>>>> Envoyé: Mercredi 4 Février 2015 14:21:18
>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>
>>>> On 02/04/2015 12:40 PM, Huy Cong Vu wrote:
>>>>>
>>>>>
>>>>> ----- Mail original -----
>>>>>> De: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>
>>>>>> À: "Philippe Gerum" <rpm@xenomai.org>
>>>>>> Cc: xenomai@xenomai.org
>>>>>> Envoyé: Mercredi 4 Février 2015 12:07:54
>>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>>
>>>>>> ----- Mail original -----
>>>>>>> De: "Philippe Gerum" <rpm@xenomai.org>
>>>>>>> À: "Huy Cong Vu" <huy-cong.vu@wandercraft.eu>, xenomai@xenomai.org
>>>>>>> Envoyé: Mercredi 4 Février 2015 10:13:14
>>>>>>> Objet: Re: [Xenomai] Xenomai 3 - no skin detected in program
>>>>>>
>>>>>>> On 02/04/2015 09:55 AM, Huy Cong Vu wrote:
>>>>>>>> Hello everyone,
>>>>>>>> I recently try to run an application compiled in native skin of Xenomai 3. When
>>>>>>>> trying to run the binary, these line appeared:
>>>>>>>> WARNING: [main] no skin detected in program
>>>>>>>> BUG: [main] initialization failed, EINVAL
>>>>>>>> I know that this is a cooperplate_init() warning when trying to initialize
>>>>>>>> native skin, but I don't understand the reason why:
>>>>>>>> if (pvlist_empty(&skins)){
>>>>>>>> warning("no skin detected in program");
>>>>>>>> ret = -EINVAL;
>>>>>>>> goto fail;
>>>>>>>> }
>>>>>>>
>>>>>>> It seems that your application was not linked against libalchemy.so.
>>>>>>> When API libraries are properly linked in, internal constructor routines
>>>>>>> populate this list. POSIX support is built-in within the Cobalt
>>>>>>> interface, so it won't appear here though.
>>>>>>>
>>>>> I change the order of the linker flags, now my app is linked against
>>>>> libalchemy.so, but this message shown up:
>>>>> symbol lookup error: /usr/xenomai/lib/libcopperplate.so.0: undefined symbol:
>>>>> main
>>>>>
>>>>> I guess that it stills a problem due to the linker flag, am I right?
>>>>>
>>>>
>>>> Yes. You seem to be using a set of flags with fine-grained tuning, some
>>>> of which might have an adverse effect on your linking stage. You should
>>>> start with the set output by xeno-config --ldflags --alchemy which are
>>>> known to work, then tune gradually as appropriate.
>>>>
>>>
>>> Hi Philippe,
>>>
>>> I'm getting close to it, but it still left some undefined reference for rtdm
>>> functions.
>>>
>>
>> rtdm_socket() is a kernel-space API for inter-driver calls, socket() is
>> what you need for creating a RTDM socket endpoint in your application.
>> The Cobalt implementation will be used provided the linker is passed the
>> proper flags (which you Makefile does).
>
> So that means I will always end up in calling socket() for all skins (alchemy or cobalt) and let the linker flags differs it in kernel space?
The API layers for x3 are described here:
http://xenomai.org/start-here/#How_does_Xenomai_deliver_real-time
alchemy is one of the non-POSIX APIs.
--
Philippe.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-02-05 15:53 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-04 8:55 [Xenomai] Xenomai 3 - no skin detected in program Huy Cong Vu
2015-02-04 9:13 ` Philippe Gerum
2015-02-04 11:07 ` Huy Cong Vu
2015-02-04 11:40 ` Huy Cong Vu
2015-02-04 13:21 ` Philippe Gerum
2015-02-05 14:05 ` Huy Cong Vu
2015-02-05 14:42 ` Philippe Gerum
2015-02-05 15:29 ` Huy Cong Vu
2015-02-05 15:48 ` Philippe Gerum
2015-02-05 15:53 ` Philippe Gerum
2015-02-04 13:16 ` 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.