summaryrefslogtreecommitdiffstats
path: root/c/src/libchip/shmdr
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-12-18 17:15:51 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-12-18 17:15:51 +0000
commit534c8936341e980afc4104471e19819e32379df2 (patch)
tree128a15a2a3efadc2156be37a209390b4fff3f2eb /c/src/libchip/shmdr
parent2008-12-18 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-534c8936341e980afc4104471e19819e32379df2.tar.bz2
2008-12-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* libchip/shmdr/dump.c, libchip/shmdr/init.c, libchip/shmdr/send.c, libchip/shmdr/shm_driver.h: Cleanup and remove variables which duplicated data.
Diffstat (limited to 'c/src/libchip/shmdr')
-rw-r--r--c/src/libchip/shmdr/dump.c7
-rw-r--r--c/src/libchip/shmdr/init.c39
-rw-r--r--c/src/libchip/shmdr/send.c4
-rw-r--r--c/src/libchip/shmdr/shm_driver.h24
4 files changed, 35 insertions, 39 deletions
diff --git a/c/src/libchip/shmdr/dump.c b/c/src/libchip/shmdr/dump.c
index 73c2acee37..76980d4c30 100644
--- a/c/src/libchip/shmdr/dump.c
+++ b/c/src/libchip/shmdr/dump.c
@@ -31,8 +31,8 @@ Shm_Print_statistics(void)
uint32_t seconds;
int packets_per_second;
- (void) rtems_clock_get( RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &ticks );
- (void) rtems_clock_get( RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_second );
+ ticks = rtems_clock_get_ticks_since_boot();
+ ticks_per_second = rtems_clock_get_ticks_per_second();
seconds = ticks / ticks_per_second;
if ( seconds == 0 )
@@ -42,7 +42,8 @@ Shm_Print_statistics(void)
if ( (Shm_Receive_message_count % seconds) >= (seconds / 2) )
packets_per_second++;
- printk( "\n\nSHMDR STATISTICS (NODE %" PRId32 ")\n", Shm_Local_node );
+ printk( "\n\nSHMDR STATISTICS (NODE %" PRId32 ")\n",
+ Multiprocessing_configuration.node );
printk( "TICKS SINCE BOOT = %" PRId32 "\n", ticks );
printk( "TICKS PER SECOND = %" PRId32 "\n", ticks_per_second );
printk( "ISRs=%" PRId32 "\n", Shm_Interrupt_count );
diff --git a/c/src/libchip/shmdr/init.c b/c/src/libchip/shmdr/init.c
index 131ff24257..cf1d33f76a 100644
--- a/c/src/libchip/shmdr/init.c
+++ b/c/src/libchip/shmdr/init.c
@@ -33,34 +33,31 @@
rtems_extensions_table MPCI_Shm_extensions;
+/*
+ * MP configuration table from confdefs.h
+ */
+
rtems_mpci_entry Shm_Initialization( void )
{
- uint32_t i, all_initialized;
- uint32_t interrupt_cause, interrupt_value;
+ uint32_t i, all_initialized;
+ uint32_t interrupt_cause, interrupt_value;
void *interrupt_address;
Shm_Node_status_control *nscb;
- uint32_t extension_id; /* for installation of MPCI_Fatal */
- uint32_t remaining_memory;
-/* XXX these should use "public" methods to set their values.... */
- rtems_configuration_table *configuration = _Configuration_Table;
- rtems_multiprocessing_table *mp_configuration = _Configuration_MP_table;
+ uint32_t extension_id; /* for installation of MPCI_Fatal */
+ uint32_t remaining_memory;
+ uint32_t local_node;
- Shm_RTEMS_Configuration = configuration;
- Shm_RTEMS_MP_Configuration = mp_configuration;
+ local_node = _Configuration_MP_table->node;
- Shm_Local_node = Shm_RTEMS_MP_Configuration->node;
- Shm_Maximum_nodes = Shm_RTEMS_MP_Configuration->maximum_nodes;
-
- Shm_Get_configuration( Shm_Local_node, &Shm_Configuration );
+ Shm_Get_configuration( local_node, &Shm_Configuration );
Shm_Interrupt_table = (Shm_Interrupt_information *) malloc(
- sizeof(Shm_Interrupt_information) * (Shm_Maximum_nodes + 1)
+ sizeof(Shm_Interrupt_information) * (SHM_MAXIMUM_NODES + 1)
);
assert( Shm_Interrupt_table );
-
Shm_Receive_message_count = 0;
Shm_Null_message_count = 0;
Shm_Interrupt_count = 0;
@@ -112,8 +109,8 @@ rtems_mpci_entry Shm_Initialization( void )
* processing it.
*/
- Shm_Local_receive_queue = &Shm_Locked_queues[ Shm_Local_node ];
- Shm_Local_node_status = &Shm_Node_statuses[ Shm_Local_node ];
+ Shm_Local_receive_queue = &Shm_Locked_queues[ local_node ];
+ Shm_Local_node_status = &Shm_Node_statuses[ local_node ];
/*
* Convert local interrupt cause information into the
@@ -150,7 +147,7 @@ rtems_mpci_entry Shm_Initialization( void )
Shm_Locked_queue_Initialize( FREE_ENV_CB, FREE_ENV_POOL );
- for ( i=SHM_FIRST_NODE ; i<=Shm_Maximum_nodes ; i++ ) {
+ for ( i=SHM_FIRST_NODE ; i<=SHM_MAXIMUM_NODES ; i++ ) {
Shm_Initialize_receive_queue( i );
Shm_Node_statuses[ i ].status = Shm_Pending_initialization;
@@ -185,7 +182,7 @@ rtems_mpci_entry Shm_Initialization( void )
do {
all_initialized = 1;
- for ( i = SHM_FIRST_NODE ; i <= Shm_Maximum_nodes ; i++ )
+ for ( i = SHM_FIRST_NODE ; i <= SHM_MAXIMUM_NODES ; i++ )
if ( Shm_Node_statuses[ i ].status != Shm_Initialization_complete )
all_initialized = 0;
@@ -195,7 +192,7 @@ rtems_mpci_entry Shm_Initialization( void )
* Tell the other nodes we think that the system is up.
*/
- for ( i = SHM_FIRST_NODE ; i <= Shm_Maximum_nodes ; i++ )
+ for ( i = SHM_FIRST_NODE ; i <= SHM_MAXIMUM_NODES ; i++ )
Shm_Node_statuses[ i ].status = Shm_Active_node;
} else { /* is not MASTER node */
@@ -233,7 +230,7 @@ rtems_mpci_entry Shm_Initialization( void )
* Initialize the Interrupt Information Table
*/
- for ( i = SHM_FIRST_NODE ; i <= Shm_Maximum_nodes ; i++ ) {
+ for ( i = SHM_FIRST_NODE ; i <= SHM_MAXIMUM_NODES ; i++ ) {
nscb = &Shm_Node_statuses[ i ];
Shm_Interrupt_table[i].address = Shm_Convert_address(
diff --git a/c/src/libchip/shmdr/send.c b/c/src/libchip/shmdr/send.c
index bdfd272b32..d28c6bfeb3 100644
--- a/c/src/libchip/shmdr/send.c
+++ b/c/src/libchip/shmdr/send.c
@@ -44,8 +44,8 @@ rtems_mpci_entry Shm_Send_packet(
(*Shm_Configuration->cause_intr)( node );
}
else {
- for( nnum = SHM_FIRST_NODE ; nnum <= Shm_Maximum_nodes ; nnum++ )
- if ( Shm_Local_node != nnum ) {
+ for( nnum = SHM_FIRST_NODE ; nnum <= SHM_MAXIMUM_NODES ; nnum++ )
+ if ( _Configuration_MP_table->node != nnum ) {
tmp_ecb = Shm_Allocate_envelope();
if ( !tmp_ecb )
rtems_fatal_error_occurred( SHM_NO_FREE_PKTS );
diff --git a/c/src/libchip/shmdr/shm_driver.h b/c/src/libchip/shmdr/shm_driver.h
index 917181c185..d0426e8cd6 100644
--- a/c/src/libchip/shmdr/shm_driver.h
+++ b/c/src/libchip/shmdr/shm_driver.h
@@ -227,9 +227,9 @@ extern "C" {
#define START_NS_CBS ((void *)Shm_Configuration->base)
#define START_LQ_CBS ((START_NS_CBS) + \
- ( (sizeof (Shm_Node_status_control)) * (Shm_Maximum_nodes + 1) ) )
+ ( (sizeof (Shm_Node_status_control)) * (SHM_MAXIMUM_NODES + 1) ) )
#define START_ENVELOPES ( ((void *) START_LQ_CBS) + \
- ( (sizeof (Shm_Locked_queue_Control)) * (Shm_Maximum_nodes + 1) ) )
+ ( (sizeof (Shm_Locked_queue_Control)) * (SHM_MAXIMUM_NODES + 1) ) )
#define END_SHMCI_AREA ( (void *) START_ENVELOPES + \
( (sizeof (Shm_Envelope_control)) * Shm_Maximum_envelopes ) )
#define END_SHARED_MEM (START_NS_CBS+Shm_Configuration->length)
@@ -237,7 +237,7 @@ extern "C" {
/* macros */
#define Shm_Is_master_node() \
- ( SHM_MASTER == Shm_Local_node )
+ ( SHM_MASTER ==_Configuration_MP_table-> node )
#define Shm_Free_envelope( ecb ) \
Shm_Locked_queue_Add( FREE_ENV_CB, (ecb) )
@@ -431,6 +431,8 @@ struct shm_config_info {
typedef struct shm_config_info shm_config_table;
+#define SHM_MAXIMUM_NODES Multiprocessing_configuration.maximum_nodes
+
/* global variables */
#ifdef _SHM_INIT
@@ -444,22 +446,18 @@ SHM_EXTERN Shm_Interrupt_information *Shm_Interrupt_table;
SHM_EXTERN Shm_Node_status_control *Shm_Node_statuses;
SHM_EXTERN Shm_Locked_queue_Control *Shm_Locked_queues;
SHM_EXTERN Shm_Envelope_control *Shm_Envelopes;
-SHM_EXTERN rtems_configuration_table *Shm_RTEMS_Configuration;
-SHM_EXTERN rtems_multiprocessing_table *Shm_RTEMS_MP_Configuration;
-SHM_EXTERN uint32_t Shm_Receive_message_count;
-SHM_EXTERN uint32_t Shm_Null_message_count;
-SHM_EXTERN uint32_t Shm_Interrupt_count;
-SHM_EXTERN uint32_t Shm_Local_node;
-SHM_EXTERN Shm_Locked_queue_Control *Shm_Local_receive_queue;
-SHM_EXTERN Shm_Node_status_control *Shm_Local_node_status;
-SHM_EXTERN uint32_t Shm_isrstat;
+SHM_EXTERN uint32_t Shm_Receive_message_count;
+SHM_EXTERN uint32_t Shm_Null_message_count;
+SHM_EXTERN uint32_t Shm_Interrupt_count;
+SHM_EXTERN Shm_Locked_queue_Control *Shm_Local_receive_queue;
+SHM_EXTERN Shm_Node_status_control *Shm_Local_node_status;
+SHM_EXTERN uint32_t Shm_isrstat;
/* reported by shmdr */
SHM_EXTERN uint32_t Shm_Pending_initialization;
SHM_EXTERN uint32_t Shm_Initialization_complete;
SHM_EXTERN uint32_t Shm_Active_node;
-SHM_EXTERN uint32_t Shm_Maximum_nodes;
SHM_EXTERN uint32_t Shm_Maximum_envelopes;
SHM_EXTERN uint32_t Shm_Locked_queue_End_of_list;