rtems_interrupt_is_in_progress() not working.

Joel Sherrill joel.sherrill at OARcorp.com
Sat Jan 9 15:38:20 UTC 2010


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?

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. :)
> 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
>    

-------------- next part --------------
A non-text attachment was scrubbed...
Name: from_isr.tar.bz2
Type: application/x-bzip
Size: 1522 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/users/attachments/20100109/702e1f67/attachment-0001.bin>


More information about the users mailing list