2008-01-28 Joel Sherrill <joel.sherrill@OARcorp.com>

* sapi/include/confdefs.h, score/src/mpci.c, score/src/objectmp.c,
	score/src/objectnametoid.c, score/src/objectnametoidstring.c:
	Multiprocessing compiles again and survives initialization. The
	recent object name and confdefs.h changes had broken it.
This commit is contained in:
Joel Sherrill
2008-01-28 17:19:01 +00:00
parent 81f595760d
commit def9eef5f7
6 changed files with 34 additions and 12 deletions

View File

@@ -1,3 +1,10 @@
2008-01-28 Joel Sherrill <joel.sherrill@OARcorp.com>
* sapi/include/confdefs.h, score/src/mpci.c, score/src/objectmp.c,
score/src/objectnametoid.c, score/src/objectnametoidstring.c:
Multiprocessing compiles again and survives initialization. The
recent object name and confdefs.h changes had broken it.
2008-01-25 Jennifer Averett <jennifer.averett@OARcorp.com> 2008-01-25 Jennifer Averett <jennifer.averett@OARcorp.com>
* sapi/include/rtems/fatal.h, score/include/rtems/score/coremutex.h, * sapi/include/rtems/fatal.h, score/include/rtems/score/coremutex.h,

View File

@@ -525,6 +525,10 @@ int rtems_bdbuf_configuration_size =( sizeof(rtems_bdbuf_configuration)
#define CONFIGURE_MP_MAXIMUM_PROXIES 32 #define CONFIGURE_MP_MAXIMUM_PROXIES 32
#endif #endif
#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
#endif
#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER #ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
#include <mpci.h> #include <mpci.h>
#define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table
@@ -532,11 +536,12 @@ int rtems_bdbuf_configuration_size =( sizeof(rtems_bdbuf_configuration)
#ifdef CONFIGURE_INIT #ifdef CONFIGURE_INIT
rtems_multiprocessing_table Multiprocessing_configuration = { rtems_multiprocessing_table Multiprocessing_configuration = {
CONFIGURE_MP_NODE_NUMBER, /* local node number */ CONFIGURE_MP_NODE_NUMBER, /* local node number */
CONFIGURE_MP_MAXIMUM_NODES, /* maximum # nodes in system */ CONFIGURE_MP_MAXIMUM_NODES, /* maximum # nodes in system */
CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS, /* maximum # global objects */ CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS, /* maximum # global objects */
CONFIGURE_MP_MAXIMUM_PROXIES, /* maximum # proxies */ CONFIGURE_MP_MAXIMUM_PROXIES, /* maximum # proxies */
CONFIGURE_MP_MPCI_TABLE_POINTER /* pointer to MPCI config table */ CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK, /* MPCI task stack > minimum */
CONFIGURE_MP_MPCI_TABLE_POINTER /* pointer to MPCI config table */
}; };
#endif #endif
@@ -1096,7 +1101,8 @@ itron_initialization_tasks_table ITRON_Initialization_tasks[] = {
#define CONFIGURE_MEMORY_FOR_MP \ #define CONFIGURE_MEMORY_FOR_MP \
( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \ ( CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \
CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \ CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS) + \
CONFIGURE_MEMORY_FOR_TASKS(1) \ CONFIGURE_MEMORY_FOR_TASKS(1) + \
CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK \
) )
#endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */ #endif /* CONFIGURE_HAS_OWN_MULTIPROCESING_TABLE */

View File

@@ -95,10 +95,10 @@ void _MPCI_Handler_initialization(
* This subprogram creates the MPCI receive server. * This subprogram creates the MPCI receive server.
*/ */
char *_MPCI_Internal_name = "MPCI";
void _MPCI_Create_server( void ) void _MPCI_Create_server( void )
{ {
Objects_Name name;
if ( !_System_state_Is_multiprocessing ) if ( !_System_state_Is_multiprocessing )
return; return;
@@ -109,6 +109,7 @@ void _MPCI_Create_server( void )
_MPCI_Receive_server_tcb = _Thread_Internal_allocate(); _MPCI_Receive_server_tcb = _Thread_Internal_allocate();
name.name_u32 = _Objects_Build_name( 'M', 'P', 'C', 'I' );
_Thread_Initialize( _Thread_Initialize(
&_Thread_Internal_information, &_Thread_Internal_information,
_MPCI_Receive_server_tcb, _MPCI_Receive_server_tcb,
@@ -122,7 +123,7 @@ void _MPCI_Create_server( void )
THREAD_CPU_BUDGET_ALGORITHM_NONE, THREAD_CPU_BUDGET_ALGORITHM_NONE,
NULL, /* no budget algorithm callout */ NULL, /* no budget algorithm callout */
0, /* all interrupts enabled */ 0, /* all interrupts enabled */
_MPCI_Internal_name name
); );
_Thread_Start( _Thread_Start(

View File

@@ -169,7 +169,7 @@ Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search (
Objects_MP_Control *the_object; Objects_MP_Control *the_object;
uint32_t name_to_use; uint32_t name_to_use;
name_to_use = (uint32_t)the_name; /* XXX only fixed length names */ name_to_use = the_name.name_u32; /* XXX only fixed length names */
if ( nodes_to_search > _Objects_Maximum_nodes ) if ( nodes_to_search > _Objects_Maximum_nodes )
return OBJECTS_INVALID_NODE; return OBJECTS_INVALID_NODE;

View File

@@ -58,6 +58,9 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
Objects_Control *the_object; Objects_Control *the_object;
uint32_t index; uint32_t index;
uint32_t name_length; uint32_t name_length;
#if defined(RTEMS_MULTIPROCESSING)
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == FALSE */ /* ASSERT: information->is_string == FALSE */
@@ -95,7 +98,8 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
if ( _Objects_Is_local_node( node ) || node == OBJECTS_SEARCH_LOCAL_NODE ) if ( _Objects_Is_local_node( node ) || node == OBJECTS_SEARCH_LOCAL_NODE )
return OBJECTS_INVALID_NAME; return OBJECTS_INVALID_NAME;
return ( _Objects_MP_Global_name_search( information, name, node, id ) ); name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else #else
return OBJECTS_INVALID_NAME; return OBJECTS_INVALID_NAME;
#endif #endif

View File

@@ -60,6 +60,9 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string(
Objects_Control *the_object; Objects_Control *the_object;
uint32_t index; uint32_t index;
uint32_t name_length; uint32_t name_length;
#if defined(RTEMS_MULTIPROCESSING)
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == TRUE */ /* ASSERT: information->is_string == TRUE */
@@ -100,7 +103,8 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string(
if ( _Objects_Is_local_node( node ) || node == OBJECTS_SEARCH_LOCAL_NODE ) if ( _Objects_Is_local_node( node ) || node == OBJECTS_SEARCH_LOCAL_NODE )
return OBJECTS_INVALID_NAME; return OBJECTS_INVALID_NAME;
return ( _Objects_MP_Global_name_search( information, name, node, id ) ); name_for_mp.name_p = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else #else
return OBJECTS_INVALID_NAME; return OBJECTS_INVALID_NAME;
#endif #endif