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