summaryrefslogtreecommitdiffstats
path: root/c/src/libchip
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-05-24 21:39:42 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-05-24 21:39:42 +0000
commit88d594a3d52cb5938521619bca0def8e5b040cf0 (patch)
treec687a29a2a3d62c87e496c4c4700183f17210a5c /c/src/libchip
parentForcing RCS revision to 1.2 I hope (diff)
downloadrtems-88d594a3d52cb5938521619bca0def8e5b040cf0.tar.bz2
Fully tested on all in-house targets
Diffstat (limited to 'c/src/libchip')
-rw-r--r--c/src/libchip/shmdr/poll.c29
-rw-r--r--c/src/libchip/shmdr/shm_driver.h4
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