diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2008-09-05 21:33:41 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2008-09-05 21:33:41 +0000 |
commit | 252dea2fa1cec0f4f692144177c969bc48a5c204 (patch) | |
tree | a0b3f59bbf71db7240d6168c14553edb23ee9204 | |
parent | 2008-09-05 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-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.
-rw-r--r-- | c/src/lib/libbsp/powerpc/psim/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/psim/shmsupp/lock.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/powerpc/psim/ChangeLog b/c/src/lib/libbsp/powerpc/psim/ChangeLog index 0b52f8f9e2..266baca8c4 100644 --- a/c/src/lib/libbsp/powerpc/psim/ChangeLog +++ b/c/src/lib/libbsp/powerpc/psim/ChangeLog @@ -1,5 +1,10 @@ 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. + +2008-09-05 Joel Sherrill <joel.sherrill@oarcorp.com> + * Makefile.am, preinstall.am, shmsupp/getcfg.c, shmsupp/lock.c, startup/linkcmds: Now running mptests using new memory layout with updates patches against gdb 6.8. 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 ); } |