Jan Kiszka wrote:
> Hi,
> 
> I stumbled over a strange behaviour of rt_task_delete for a created, set
> periodic, but non-started task. The process gets killed on invocation,

More precisely:

(gdb) cont
Program received signal SIG32, Real-time event 32.

Weird. No kernel oops BTW.

> but only if rt_task_set_periodic was called with a non-zero start time.
> Here is the demo code:
> 
> #include <stdio.h>
> #include <sys/mman.h>
> #include <native/task.h>
> 
> main()
> {
>       RT_TASK task;
> 
>       mlockall(MCL_CURRENT|MCL_FUTURE);
> 
>       printf("rt_task_create=%d\n",
>               rt_task_create(&task, "task", 8192*4, 10, 0));
> 
>       printf("rt_task_set_periodic=%d\n",
>               rt_task_set_periodic(&task, rt_timer_read()+1, 100000));
> 
>       printf("rt_task_delete=%d\n",
>               rt_task_delete(&task));
> }
> 
> Once you skip rt_task_set_periodic or call it like this
> rt_task_set_periodic(&task, TM_NOW, 100000), everything is fine. Tested
> over trunk, but I guess over versions should suffer as well.
> 
> I noticed that the difference seems to be related to the
> xnpod_suspend_thread in xnpod_set_thread_periodic. That suspend is not
> called on idate == XN_INFINITE. What is it for then, specifically if you
> would call xnpod_suspend_thread(thread, xnpod_get_time()+period, period)
> which should have the same effect like xnpod_suspend_thread(thread, 0,
> period)?
> 
> Jan


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to