Henry Bausley wrote:
> How do I setup xenomai so that my ISR can be re-entered even if I am
> currently in it.
>
Try this:
int your_isr(xnintr_t *intr)
{
unsigned long flags;
xnlock_clear_irqon(&nklock);
... your code ...
xnlock_get_irqsave(&nklock, flags); /* must re-lock on exit */
}
We do take a per-IRQ lock internally as well, but this is a no-brainer for the
issue at stake.
NOTE: this solution is only valid in uniprocessor mode. SMP would run into
deadlocks; we would need to provide internal support to allow this.
> I have an external edge interrupt wired and it occurs every 250usec. There
> are instances
> when the interrupt can occur while I am currently in my ISR.
>
> If another interrupt occurs while I am currently in my ISR I want my ISR to
> be called again
> so I can flag that the condition occurred then exit the re-entered ISR and
> continue executing
> the originally called ISR.
>
>
> I am using a board based off the AMCC 440EP Yosemite and a Denx Kit with
> 2.6.24 and Xenomai 2.4.2
> This something I did with previously with RT Linux. I have converted a
> large project from FSM RT Linux
> to Xenomai and everything is functioning except this last item.
>
>
>
>
> _______________________________________________
> Xenomai-help mailing list
> [email protected]
> https://mail.gna.org/listinfo/xenomai-help
>
--
Philippe.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help