On 22/06/07, Jan Kiszka <[EMAIL PROTECTED]> wrote:
> [ ... ]
>
> Only compile-tested under various .configs. Any comment welcome.
>

> @@ -76,7 +102,7 @@ static inline void xnintr_stat_counter_d
>  static void xnintr_irq_handler(unsigned irq, void *cookie)
>  {
>         xnsched_t *sched = xnpod_current_sched();
> -       xnintr_t *intr = (xnintr_t *)cookie;
> +       xnintr_t *intr;
>         xnstat_runtime_t *prev;
>         xnticks_t start;
>         int s;
> @@ -86,6 +112,16 @@ static void xnintr_irq_handler(unsigned
>         xnltt_log_event(xeno_ev_ienter, irq);
>
>         ++sched->inesting;
> +
> +       xnlock_get(&xnirqs[irq].lock);
> +
> +#ifdef CONFIG_SMP
> +       /* In SMP case, we have to reload the cookie under the per-IRQ lock
> +          to avoid racing with xnintr_detach. */
> +       intr = rthal_irq_cookie(&rthal_domain, irq);
> +#else
> +       intr = cookie;
> +#endif
>         s = intr->isr(intr);

I guess, 'intr' can be NULL here.

Could you please send me attached (non-inlined) a combo patch on top
of the trunk version (as I see this one seems to be on top of your
previous one)? I'll try to come up with some solution during this
weekend.


-- 
Best regards,
Dmitry Adamushko

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

Reply via email to