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

Reply via email to