[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Obtaining Semaphore in a Interrupt?
- Date: Wed, 3 Sep 2008 16:45:12 +0200
- From: leonard.bise at syderal.ch (Leonard Bise)
- Subject: Obtaining Semaphore in a Interrupt?
Hi all,
On the project I'm working on we need to protect a ressource from being
accessed by multiple tasks.
For this purpose we use a binary semaphore that is created in the
following manner :
sc = rtems_semaphore_create( rtems_build_name( 'D', 'R', 'V', 's' ), 1,
RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY
| RTEMS_PRIORITY,
RTEMS_NO_PRIORITY, &semDriver );
We use a board based on a LEON2 Processor and we use a few ISR as well.
These ISRs must often access the same protected ressources when triggered.
The problem arise when we are in a task that is in the middle of accessing
the protected ressources and that it obtains the semaphore and that
directly after an interrupt is triggered. The ISR would ask for a
semaphore when the last one was not released yet, because it is in the
middle of being processed. We then get a deadlock!
Could anyone please help me on this ? I guess the best way is to not use
semaphore in ISR but how can i protect my ressource then !
The version used of RTEMS is 4.6.6
Regards,
Bise L?onard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rtems.rtems.org/pipermail/rtems-users/attachments/20080903/0b0d5dfc/attachment.html