All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] What happens if task entry function returns?
@ 2006-11-17 10:17 M. Koehrer
  2006-11-17 10:59 ` [Xenomai-help] " Jan Kiszka
  0 siblings, 1 reply; 2+ messages in thread
From: M. Koehrer @ 2006-11-17 10:17 UTC (permalink / raw)
  To: xenomai


[-- Attachment #1.1: Type: text/plain, Size: 1450 bytes --]

Hi!

I am just playing around with Xenomai to understand it.
And I have one question concerning the entry function that will be called from
rt_task_start (Native API).
What happens if this entry function reaches its end or a return within the function is
called?

I have made a simple example that lead to strange effects.
In my example (see complete C Code in attachement) I create to tasks
that do the same.
The entry functions look like:

void taska(void *cookie)
{
    RTIME delay;
    int i;
    printf("Hi, I am task A %s\n", (char*)cookie);
    delay = 100000;

    for (i=0; i<200; i++)
    {
        rt_task_sleep(delay);
    }

    printf("This is the end of A\n");
    // rt_task_delete(0);
}
When I do not place the rt_task_delete(0) at the end of the function
my second task will never reach the end with the second printf.
Whenever I use rt_task_delete(0) at the end of the function it works perfectly.

My question is now: What happens if the task's entry function returns?

Thanks for any feedback on that question.

Regards

Mathias


-- 
Mathias Koehrer
mathias_koehrer@domain.hid


Viel oder wenig? Schnell oder langsam? Unbegrenzt surfen + telefonieren
ohne Zeit- und Volumenbegrenzung? DAS TOP ANGEBOT JETZT bei Arcor: günstig
und schnell mit DSL - das All-Inclusive-Paket für clevere Doppel-Sparer,
nur  44,85 €  inkl. DSL- und ISDN-Grundgebühr!
http://www.arcor.de/rd/emf-dsl-2

[-- Attachment #2: multitasks.c.gz --]
[-- Type: application/postscript, Size: 562 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Xenomai-help] Re: What happens if task entry function returns?
  2006-11-17 10:17 [Xenomai-help] What happens if task entry function returns? M. Koehrer
@ 2006-11-17 10:59 ` Jan Kiszka
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kiszka @ 2006-11-17 10:59 UTC (permalink / raw)
  To: M. Koehrer; +Cc: Xenomai

M. Koehrer wrote:
> Hi!
> 
> I am just playing around with Xenomai to understand it.
> And I have one question concerning the entry function that will be called from
> rt_task_start (Native API).
> What happens if this entry function reaches its end or a return within the function is
> called?
> 
> I have made a simple example that lead to strange effects.
> In my example (see complete C Code in attachement) I create to tasks
> that do the same.
> The entry functions look like:
> 
> void taska(void *cookie)
> {
>     RTIME delay;
>     int i;
>     printf("Hi, I am task A %s\n", (char*)cookie);
>     delay = 100000;
> 
>     for (i=0; i<200; i++)
>     {
>         rt_task_sleep(delay);
>     }
> 
>     printf("This is the end of A\n");
>     // rt_task_delete(0);
> }
> When I do not place the rt_task_delete(0) at the end of the function
> my second task will never reach the end with the second printf.
> Whenever I use rt_task_delete(0) at the end of the function it works perfectly.

Quite inconsistent, sounds like a bug. Does the second rt_task_join just
rush through and main terminates?

> 
> My question is now: What happens if the task's entry function returns?

pthread_exit() is invoked implicitly, which implies rt_task_delete(NULL).

> 
> Thanks for any feedback on that question.

Is this issue SMP-related? What happens if you force all your tasks to
the same CPU? Or if you run on a !CONFIG_SMP box?

Jan


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-11-17 10:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-17 10:17 [Xenomai-help] What happens if task entry function returns? M. Koehrer
2006-11-17 10:59 ` [Xenomai-help] " Jan Kiszka

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.