2011/1/21 Philippe Gerum <[email protected]>

> On Fri, 2011-01-21 at 18:01 +0100, Michel Rinaldi wrote:
> > Hi to all,
> >
> > I'm running an application on a Linux system with kernel 2.6.35.7
> > patched with Xenomai 2.5.5.2, Adeos ipipe patch 2.7-04.
> > My application uses native skin and creates some realtime tasks, each
> > with rt_task_shadow(), each other with rt_task_create().
>
> Sorry, -ENOPARSE. rt_task_shadow() is usually invoked from the main
> thread to make it a Xenomai thread, rt_task_create is normally used to
> create more tasks. Who is doing what in your code exactly? How many
> times is rt_task_shadow() invoked?
>

I apologize for "tar.gzipped" :-) explanation.
I have one main thread that calls rt_task_shadow() to become a real-time
task.
This task creates a pthread that makes itself a real-time thread with
rt_task_shadow() call.
Then, latter task creates a new real-time task with rt_task_create().
First rt_task_create() call spends more time, next calls are immediate ( <
1millisecond ).


> >  When I call for first time rt_task_create(), this function is very
> > slow (700-800 ms) to execute, also if rt_task_shadow() calls come
> > first. Subsequent calls of rt_task_create() are quick as expected. I
> > read on manual that at first call rt_task_create() creates a signal
> > handler for SIGWINCH signal: could be this operation that wastes time,
> > maybe on waiting some resources from Linx kernel?
>
> No, can't be that long. Something looks wrong in your application init.
>

I'll do additional checks on my code monday.


>
> > Another problem that I've encountered is that if I call a
> > rt_int_delete() and then a rt_task_join() on userspace task that
> > handles destroyed IRQ,  rt_task_join() never returns (obviously this
> > task was created with joinable flag). If I create this task without
> > joinable flag and then I call rt_task_delete() instead rt_task_join()
> > I obtain two different behaviours: sometimes rt_task_delete() returns
> > but I still view task on /proc/xenomai/sched (with X status),
> > sometimes system freezes on this call.
>
> Make sure to test the return values of ALL Xenomai syscalls in your app,
> particularly what rt_intr_wait() sends you back, and make sure to break
> out from your work loop whenever it signals any error.
>

I'll also add additional checks on all Xenomai calls.
Thank you very much.
Regards
Mauro Salvini


>
> > Thanks to all in advance.
> > Regards
> >
> > Mauro Salvini
> >
> >
> > _______________________________________________
> > 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
>
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to