On Sun, 2010-09-19 at 16:04 +0100, ronny meeus wrote:
> Hello
>
> I'm using xenomai in a qemu setup.
> My final goal is to use xenomai to port extisting pSOS application to
> the linux platform.
>
> The first step I did was building a kernel with the pSOS skin enabled.
> These traces are generated at kernel startup:
> [ 0.212363] I-pipe: Domain Xenomai registered.
> [ 0.212363] Xenomai: hal/i386 started.
> [ 0.212363] Xenomai: scheduling class idle registered.
> [ 0.212363] Xenomai: scheduling class rt registered.
> [ 0.246987] Xenomai: real-time nucleus v2.5.4 (Sleep Walk) loaded.
> [ 0.246987] Xenomai: debug mode enabled.
> [ 0.274658] Xenomai: starting native API services.
> [ 0.274658] Xenomai: starting POSIX services.
> [ 0.296357] Xenomai: starting RTDM services.
> [ 0.296357] Xenomai: registered exported object RN#0 (regions)
> [ 0.296357] Xenomai: starting pSOS+ services.
> [ 0.305601] HugeTLB registered 4 MB page size, pre-allocated 0
> pages
>
> This is the example application:
>
> #include <psos+/psos.h>
>
> void task2_func(u_long a,u_long b,u_long c,u_long d)
> {
> while (1) {
> tm_wkafter(1000);
> }
> }
>
> int main(int argc, char **argv)
> {
> unsigned long tid;
> unsigned long args[4] = {0,0,0,0};
>
> t_create("TEST",10,160000,160000,0,&tid);
> t_start(tid,0,task2_func,args);
> while (1) {
> sleep(100);
> }
> }
I'm unsure whether the code above is actually the one which issues the
output mentioned below. I see no t_shadow call, and no status printout
there.
>
> The command line used during compilation is:
>
> /home/meeusr/repo/xenomai-configs/buildroot-output/staging/usr/bin/i686-unknown-linux-uclibc-gcc
> -Os -pipe -Os -mtune=i686 -march=i686 -D_LARGEFILE_SOURCE
> -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
> -I/home/meeusr/repo/xenomai-configs/buildroot-output/staging/usr/include
> -I/home/meeusr/repo/xenomai-configs/buildroot-output/staging/include
> --sysroot=/home/meeusr/repo/xenomai-configs/buildroot-output/staging/
> -isysroot /home/meeusr/repo/xenomai-configs/buildroot-output/staging
> -I/home/meeusr/repo/xenomai-configs/buildroot-output/target/usr/xenomai/include
> -D_GNU_SOURCE -D_REENTRANT -Wall -pipe -D__XENO__
> -I/home/meeusr/repo/xenomai-configs/buildroot-output/target/usr/xenomai/include/psos+
> rtprint.c -lpsos
> -L/home/meeusr/repo/xenomai-configs/buildroot-output/target/usr/xenomai/lib
> -lxenomai -lpthread -lpsos -Xlinker -rpath -Xlinker
> /home/meeusr/repo/xenomai-configs/buildroot-output/target/usr/xenomai/lib
> -lrtdk -o rtprint_ronny
>
>
> When I try to run the application I get (first time):
> # ./rtprint_ronny
> Xenomai pSOS skin init: t_shadow() failed, status -14#
> #
Assuming your code does call t_shadow, the behavior you see is caused by
a regression in the pSOS skin. Please apply:
http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=55c1b958c6bd11068cacb6258c7a957ab581ce73
>
> The second time I get
> # ./rtprint_ronny
> [ 145.049826] Xenomai: FAILED to register object MAIN (unknown type),
> status -17
> Xenomai pSOS skin init: t_shadow() failed, status -17#
> #
This was a consequence of the previous bug; the shadowing call would
raise a fault causing the calling task to die, but the cleanup code
could not run as expected, leaving a stale "MAIN" task entry in the
internal registry. This would in turn cause -EEXIST to be sent for any
attempt to create a "MAIN"-labeled task again. The patch mentioned above
should prevent this situation to occur.
>
> I already read somewhere that the -14 and -17 error codes (negative
> values) indicate that there is a problem in the nucleus
> Can somebody tell me what I do wrong?
Nothing. The pSOS emulator code was wrong.
>
> Best regards,
> Ronny
> _______________________________________________
> Xenomai-help mailing list
> [email protected]
> https://mail.gna.org/listinfo/xenomai-help
--
Philippe.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help