Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
>> Jan Kiszka wrote:
>>> Philippe Gerum wrote:
>>>> Jan Kiszka wrote:
>>>>> Meanwhile I played with some light-weight approach to relax a thread
>>>>> that received a signal (according to do_sigwake_event). Worked, but only
>>>>> once due to a limitation (if not bug) of I-pipe x86: in __ipipe_run_isr,
>>>>> it does not handle the case that a non-root handler may alter the
>>>>> current domain, causing corruptions to the IPIPE_SYNC_FLAG states of the
>>>>> involved domains.
>>>> It is not a bug, this is wanted. ISR must neither change the current
>>>> domain nor migrate CPU; allowing this would open Pandora's box.
>>> And if there is no way to migrate from within an ISR, we can bury any
>>> attempt to deliver signals to spinning Xenomai threads - or what other
>>> context would remain to Xenomai for triggering migration?
>>>
>> The two-phase solution I have mentioned would work.
> 
> Something like:
> 
> Index: ksrc/nucleus/sched.c
> ===================================================================
> --- ksrc/nucleus/sched.c        (revision 4678)
> +++ ksrc/nucleus/sched.c        (working copy)
> @@ -75,7 +75,13 @@ static void xnsched_watchdog_handler(str
>                            thread, xnthread_name(thread));
>                 xnprintf("watchdog triggered -- killing runaway thread
> '%s'\n",
>                          xnthread_name(thread));
> -               xnpod_delete_thread(thread);
> +#ifdef CONFIG_XENO_OPT_PERVASIVE
> +               if (xnthread_user_task(thread)) {
> +                       xnpod_suspend_thread(thread);
> +                       xnshadow_send_sig(thread, SIGSEGV, 0, 1);
> +               } else
> +#endif /* CONFIG_XENO_OPT_PERVASIVE */
> +                       xnpod_delete_thread(thread);
>                 xnsched_reset_watchdog(sched);
>         }
>  }

Looks good - but we first have to establish that famous relax-on-pending
signal thing...

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux

_______________________________________________
Xenomai-core mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-core

Reply via email to