Gilles Chanteperdrix wrote: > On Dec 11, 2007 2:20 PM, Wolfgang Grandegger <[EMAIL PROTECTED]> wrote: >> Wolfgang Grandegger wrote: >>> The attached test application using a more sophisticated signal handling >>> works fine on my MPC5200-board running Linux 2.6.23 and Xenomai trunk. >>> Going to try it tomorrow on my PC. >> It works fine as well on my PC with Linux 2.6.23 and Xenomai trunk and >> now also with Linux 2.4.25 and Xenomai 2.3.x :-). Just to understand it >> right: The task signaled with pthread_kill() will be suspended and >> switches to secondary mode if it was running in primary mode. The signal >> will then be handled by Linux as usual. When the task resumes, does it >> get switched back to primary mode automatically? > > No, it will get swtiched back to primary mode only if it calls a > service needing primary mode.
OK. >> Great, the only open issue is why executing init_task() switches to >> secondary mode resulting in period overruns in high_prio_task(). Is that >> obvious to you? > > init_task calls pthread_create, which needs running in secondary mode > to create a thread. We can not create a task without help from > secondary mode. OK. I was a bit quick with my assumption that it works with 2.4. It actually only works, if I have a pthread_set_mode_np() in the while loop of the primary task: while (1) { pthread_set_mode_np(0, PTHREAD_PRIMARY); count++; } Without pthread_set_mode_np(), the system hangs after the following output lines: bash-2.05b# ./kill_pthread2 Starting high_prio_task low_prio_task: policy=1 prio=5 SIGUSER1 to id_low: count=17497245, overruns=0 It seems to hang when the low_prio_task() calls pthread_wait_np() thereafter. Any quick idea where the problem is? Wolfgang. _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core