diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-05-24 21:39:42 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-05-24 21:39:42 +0000 |
commit | 88d594a3d52cb5938521619bca0def8e5b040cf0 (patch) | |
tree | c687a29a2a3d62c87e496c4c4700183f17210a5c /c/src/libchip | |
parent | Forcing RCS revision to 1.2 I hope (diff) | |
download | rtems-88d594a3d52cb5938521619bca0def8e5b040cf0.tar.bz2 |
Fully tested on all in-house targets
Diffstat (limited to 'c/src/libchip')
-rw-r--r-- | c/src/libchip/shmdr/poll.c | 29 | ||||
-rw-r--r-- | c/src/libchip/shmdr/shm_driver.h | 4 |
2 files changed, 21 insertions, 12 deletions
diff --git a/c/src/libchip/shmdr/poll.c b/c/src/libchip/shmdr/poll.c index 43f6711ff9..c833d49254 100644 --- a/c/src/libchip/shmdr/poll.c +++ b/c/src/libchip/shmdr/poll.c @@ -16,10 +16,11 @@ * to the copyright license under the clause at DFARS 252.227-7013. This * notice must appear in all copies of this file and its derivatives. * - * $Id$ + * poll.c,v 1.2 1995/05/09 20:22:57 joel Exp */ #include <rtems.h> +#include <rtems/sysstate.h> #include "shm.h" #include "clockdrv.h" @@ -29,12 +30,22 @@ void Shm_Poll() Clock_isr( 0 ); /* invoke standard clock ISR */ - /* enable_tracing(); */ - /* ticks += 1; */ - Shm_Lock( Shm_Local_receive_queue ); - tmpfront = Shm_Local_receive_queue->front; - Shm_Unlock( Shm_Local_receive_queue ); - if ( Shm_Convert(tmpfront) == Shm_Locked_queue_End_of_list ) return; - rtems_multiprocessing_announce(); - Shm_Interrupt_count++; + + /* + * Check for msgs only if we are "up" + * This avoids a race condition where we may get a clock + * interrupt before MPCI has completed its init + */ + + if (_System_state_Is_up(_System_state_Get())) + { + /* enable_tracing(); */ + /* ticks += 1; */ + Shm_Lock( Shm_Local_receive_queue ); + tmpfront = Shm_Local_receive_queue->front; + Shm_Unlock( Shm_Local_receive_queue ); + if ( Shm_Convert(tmpfront) == Shm_Locked_queue_End_of_list ) return; + rtems_multiprocessing_announce(); + Shm_Interrupt_count++; + } } diff --git a/c/src/libchip/shmdr/shm_driver.h b/c/src/libchip/shmdr/shm_driver.h index bee930138c..08ff6c3812 100644 --- a/c/src/libchip/shmdr/shm_driver.h +++ b/c/src/libchip/shmdr/shm_driver.h @@ -14,7 +14,7 @@ * to the copyright license under the clause at DFARS 252.227-7013. This * notice must appear in all copies of this file and its derivatives. * - * $Id$ + * shm.h,v 1.2 1995/05/09 20:23:03 joel Exp */ #ifndef __SHM_h @@ -24,8 +24,6 @@ extern "C" { #endif -#include <cpu.h> - /* The information contained in the Node Status, Locked Queue, and * Envelope Control Blocks must be maintained in a NEUTRAL format. * Currently the neutral format may be selected as big or little |