summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/psim/shmsupp
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-09-05 21:33:41 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-09-05 21:33:41 +0000
commit252dea2fa1cec0f4f692144177c969bc48a5c204 (patch)
treea0b3f59bbf71db7240d6168c14553edb23ee9204 /c/src/lib/libbsp/powerpc/psim/shmsupp
parent2008-09-05 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-252dea2fa1cec0f4f692144177c969bc48a5c204.tar.bz2
2008-09-05 Joel Sherrill <joel.sherrill@oarcorp.com>
* shmsupp/lock.c: Disable CPU interrupts when we have the shared memory locked. This is necessary to prevent deadlock.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/psim/shmsupp')
-rw-r--r--c/src/lib/libbsp/powerpc/psim/shmsupp/lock.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/powerpc/psim/shmsupp/lock.c b/c/src/lib/libbsp/powerpc/psim/shmsupp/lock.c
index 204d0188de..12209fb1a2 100644
--- a/c/src/lib/libbsp/powerpc/psim/shmsupp/lock.c
+++ b/c/src/lib/libbsp/powerpc/psim/shmsupp/lock.c
@@ -41,11 +41,14 @@ void Shm_Initialize_lock(
* a deadlock condition.
*/
+static rtems_interrupt_level level;
+
void Shm_Lock(
Shm_Locked_queue_Control *lq_cb
)
{
- (void) PSIM.Semaphore.lock;
+ rtems_interrupt_disable( level );
+ (void) PSIM.Semaphore.lock;
}
/*
@@ -58,5 +61,6 @@ void Shm_Unlock(
Shm_Locked_queue_Control *lq_cb
)
{
- (void) PSIM.Semaphore.unlock;
+ (void) PSIM.Semaphore.unlock;
+ rtems_interrupt_enable( level );
}