diff options
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/include/rtems/score/mpci.h | 133 |
1 files changed, 132 insertions, 1 deletions
diff --git a/cpukit/score/include/rtems/score/mpci.h b/cpukit/score/include/rtems/score/mpci.h index 8f115e8fba..25d7ac4094 100644 --- a/cpukit/score/include/rtems/score/mpci.h +++ b/cpukit/score/include/rtems/score/mpci.h @@ -30,6 +30,17 @@ extern "C" { #include <rtems/score/coresem.h> /* + * The following constants define the stack size requirements for + * the system threads. + */ + +#define MPCI_RECEIVE_SERVER_STACK_SIZE \ + ( STACK_MINIMUM_SIZE + \ + CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK + \ + _CPU_Table.extra_mpci_receive_server_stack \ + ) + +/* * The following defines the node number used when a broadcast is desired. */ @@ -92,6 +103,27 @@ typedef struct { typedef void (*MPCI_Packet_processor)( MP_packet_Prefix * ); /* + * The following enumerated type defines the list of + * internal MP operations. + */ + +typedef enum { + MPCI_PACKETS_SYSTEM_VERIFY = 0 +} MPCI_Internal_Remote_operations; + +/* + * The following data structure defines the packet used to perform + * remote event operations. + */ + +typedef struct { + MP_packet_Prefix Prefix; + MPCI_Internal_Remote_operations operation; + unsigned32 maximum_nodes; + unsigned32 maximum_global_objects; +} MPCI_Internal_packet; + +/* * This is the core semaphore which the MPCI Receive Server blocks on. */ @@ -137,6 +169,16 @@ void _MPCI_Handler_initialization( ); /* + * _MPCI_Create_server + * + * DESCRIPTION: + * + * This routine creates the packet receive server used in MP systems. + */ + +void _MPCI_Create_server( void ); + +/* * _MPCI_Initialization * * DESCRIPTION: @@ -259,7 +301,9 @@ Thread_Control *_MPCI_Process_response ( * */ -void _MPCI_Receive_server( void ); +Thread _MPCI_Receive_server( + unsigned32 ignored +); /*PAGE * @@ -272,6 +316,93 @@ void _MPCI_Receive_server( void ); void _MPCI_Announce ( void ); +/* + * _MPCI_Internal_packets_Send_process_packet + * + * DESCRIPTION: + * + * This routine performs a remote procedure call so that a + * process operation can be performed on another node. + */ + +void _MPCI_Internal_packets_Send_process_packet ( + MPCI_Internal_Remote_operations operation +); + +/* + * _MPCI_Internal_packets_Send_request_packet + * + * DESCRIPTION: + * + * This routine performs a remote procedure call so that a + * directive operation can be initiated on another node. + * + * This routine is not needed since there are no request + * packets to be sent by this manager. + */ + +/* + * _MPCI_Internal_packets_Send_response_packet + * + * DESCRIPTION: + * + * This routine performs a remote procedure call so that a + * directive can be performed on another node. + * + * This routine is not needed since there are no response + * packets to be sent by this manager. + */ + +/* + * + * _MPCI_Internal_packets_Process_packet + * + * DESCRIPTION: + * + * This routine performs the actions specific to this package for + * the request from another node. + */ + +void _MPCI_Internal_packets_Process_packet ( + MP_packet_Prefix *the_packet_prefix +); + +/* + * _MPCI_Internal_packets_Send_object_was_deleted + * + * DESCRIPTION: + * + * This routine is invoked indirectly by the thread queue + * when a proxy has been removed from the thread queue and + * the remote node must be informed of this. + * + * This routine is not needed since there are no objects + * deleted by this manager. + */ + +/* + * _MPCI_Internal_packets_Send_extract_proxy + * + * DESCRIPTION: + * + * This routine is invoked when a task is deleted and it + * has a proxy which must be removed from a thread queue and + * the remote node must be informed of this. + * + * This routine is not needed since there are no objects + * deleted by this manager. + */ + +/* + * _MPCI_Internal_packets_Get_packet + * + * DESCRIPTION: + * + * This routine is used to obtain a internal threads mp packet. + */ + + MPCI_Internal_packet *_MPCI_Internal_packets_Get_packet ( void ); + #ifdef __cplusplus } #endif |