rtems_interrupt_is_in_progress() not working.
Nick Thomas
nick.thomas at pixsan.com
Sun Jan 10 13:46:43 UTC 2010
> -----Original Message-----
> From: Joel Sherrill [mailto:joel.sherrill at oarcorp.com]
> Sent: 09 January 2010 15:38
> To: Nick Thomas
> Cc: rtems-users at rtems.com
> Subject: Re: rtems_interrupt_is_in_progress() not working.
>
> On 01/09/2010 03:58 AM, Nick Thomas wrote:
> > Hi, I have the following function, which tries to obtain a semaphore,
> > but first checking that we are not inside an ISR.
> >
> > But, it doesn't work.
> >
> >
> Which architecture?
PowerPC 405.
>
> Can you set up a simple test like the one I have attached and try it?
> The attached test sends a signal from an ISR. It is pretty small.
>
> Then it either works or doesn't and I can look at it. :)
OK, I ran the test you sent to me, and I got this output:
*** SIGNAL FROM TST TEST ***
rtems_signal_catch - handler installed
Signal sent from ISR has been processed
*** END OF SIGNAL FROM TSR TEST ***
Not sure how that helps though as the test doesn't use
rtems_interrupt_is_in_progress() !
Regards
Nick
> > It crashes in rtems_semaphore_obtain call, and the debugger shows
> that
> > there is an RTEMS error 18, which corresponds to doing the wrong
> thing
> > inside an ISR ( I think ).
> >
> > So, why doesn't rtems_interrupt_is_in_progress() detect that the call
> > is inside an ISR?
> >
> > --- SNIP ---
> > Void Lock(void)
> > {
> > rtems_status_code stat;
> >
> > if (rtems_interrupt_is_in_progress() == FALSE)
> > {
> > stat = rtems_semaphore_obtain(M_The_mutex, RTEMS_WAIT, 0);
> > if (stat != RTEMS_SUCCESSFUL)
> > {
> > printf("Lock: rtems_semaphore_obtain returned %d\n",
> stat);
> > }
> > }
> > }
> > --- END ---
> >
> > -----------------------------
> > Nick Thomas
> > Email: nick.thomas at pixsan.com
> >
> > _______________________________________________
> > rtems-users mailing list
> > rtems-users at rtems.org
> > http://www.rtems.org/mailman/listinfo/rtems-users
> >
More information about the users
mailing list