summaryrefslogtreecommitdiffstats
path: root/c/src/exec/score/headers/mpci.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--c/src/exec/score/headers/mpci.h133
1 files changed, 132 insertions, 1 deletions
diff --git a/c/src/exec/score/headers/mpci.h b/c/src/exec/score/headers/mpci.h
index 8f115e8fba..25d7ac4094 100644
--- a/c/src/exec/score/headers/mpci.h
+++ b/c/src/exec/score/headers/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