RTEMS CPU Kit with SuperCore  4.11.2
mpciimpl.h
Go to the documentation of this file.
1 
9 /*
10  * COPYRIGHT (c) 1989-2009.
11  * On-Line Applications Research Corporation (OAR).
12  *
13  * The license and distribution terms for this file may be
14  * found in the file LICENSE in this distribution or at
15  * http://www.rtems.org/license/LICENSE.
16  */
17 
18 #ifndef _RTEMS_SCORE_MPCIIMPL_H
19 #define _RTEMS_SCORE_MPCIIMPL_H
20 
21 #include <rtems/score/mpci.h>
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
39 #define MPCI_DEFAULT_TIMEOUT 0xFFFFFFFF
40 
46 
51 typedef enum {
52  MPCI_PACKETS_SYSTEM_VERIFY = 0
54 
59 typedef struct {
67  uint32_t maximum_nodes;
73 
79 
85 
94 
101 
111  uint32_t timeout_status
112 );
113 
119 void _MPCI_Create_server( void );
120 
127 void _MPCI_Initialization ( void );
128 
139  MP_packet_Classes the_class,
140  MPCI_Packet_processor the_packet_processor
141 
142 );
143 
153 
162 void _MPCI_Return_packet (
163  MP_packet_Prefix *the_packet
164 );
165 
176  uint32_t destination,
177  MP_packet_Prefix *the_packet
178 );
179 
196 uint32_t _MPCI_Send_request_packet (
197  uint32_t destination,
198  MP_packet_Prefix *the_packet,
199  States_Control extra_state,
200  uint32_t timeout_code
201 );
202 
213  uint32_t destination,
214  MP_packet_Prefix *the_packet
215 );
216 
226 
240  MP_packet_Prefix *the_packet
241 );
242 
251  uint32_t ignored
252 );
253 
259 void _MPCI_Announce ( void );
260 
271 );
272 
300  MP_packet_Prefix *the_packet_prefix
301 );
302 
331 
341  MP_packet_Classes the_packet_class
342 )
343 {
344  return ( the_packet_class <= MP_PACKET_CLASSES_LAST );
345 }
346 
349 #ifdef __cplusplus
350 }
351 #endif
352 
353 #endif
354 /* end of include file */
MPCI Layer API.
The following record contains the prefix for every packet passed between nodes in an MP system...
Definition: mppkt.h:80
Thread _MPCI_Receive_server(uint32_t ignored)
Receive and process all packets.
Definition: mpci.c:278
#define RTEMS_INLINE_ROUTINE
The following (in conjunction with compiler arguments) are used to choose between the use of static i...
Definition: basedefs.h:135
void(* MPCI_Packet_processor)(MP_packet_Prefix *)
The following defines the type for packet processing routines invoked by the MPCI Receive server...
Definition: mpciimpl.h:45
void _MPCI_Initialization(void)
Initialize the MPCI driver.
Definition: mpci.c:131
MP_packet_Classes
The following enumerated type defines the packet classes.
Definition: mppkt.h:51
MPCI_Internal_packet * _MPCI_Internal_packets_Get_packet(void)
_MPCI_Internal_packets_Send_object_was_deleted
Definition: mpci.c:430
void _MPCI_Create_server(void)
Create the MPCI server thread.
Definition: mpci.c:89
uint32_t maximum_global_objects
This field is the maximum number of concurrently existent globally offered objects.
Definition: mpciimpl.h:71
This is the structure used to manage sets of tasks which are blocked waiting to acquire a resource...
Definition: threadq.h:171
void _MPCI_Handler_initialization(uint32_t timeout_status)
Initialize the MPCI handler.
Definition: mpci.c:41
SCORE_EXTERN MPCI_Packet_processor _MPCI_Packet_processors[MP_PACKET_CLASSES_LAST+1]
The following table contains the process packet routines provided by each object that supports MP ope...
Definition: mpciimpl.h:100
uint32_t maximum_nodes
This is the maximum number of nodes in the system.
Definition: mpciimpl.h:67
MP_packet_Prefix * _MPCI_Receive_packet(void)
Receive a packet.
Definition: mpci.c:239
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
This type defines the Multiprocessor Communications Interface (MPCI) Table.
Definition: mpci.h:108
void _MPCI_Return_packet(MP_packet_Prefix *the_packet)
Deallocate a packet.
Definition: mpci.c:168
MP_packet_Prefix * _MPCI_Get_packet(void)
This function obtains a packet by invoking the user provided MPCI get packet callout.
Definition: mpci.c:145
#define MP_PACKET_CLASSES_LAST
This constant defines the last entry in the MP_packet_Classes enumeration.
Definition: mppkt.h:70
uint32_t _MPCI_Send_request_packet(uint32_t destination, MP_packet_Prefix *the_packet, States_Control extra_state, uint32_t timeout_code)
Send a request packet.
Definition: mpci.c:187
MPCI_Internal_Remote_operations operation
This value specifies the operation.
Definition: mpciimpl.h:63
void _MPCI_Send_process_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Send a process packet.
Definition: mpci.c:175
The following data structure defines the packet used to perform remote event operations.
Definition: mpciimpl.h:59
void _MPCI_Internal_packets_Send_process_packet(MPCI_Internal_Remote_operations operation)
Perform a process on another node.
Definition: mpci.c:339
MP_packet_Prefix Prefix
This field is the general header for all packets.
Definition: mpciimpl.h:61
SCORE_EXTERN Thread_queue_Control _MPCI_Remote_blocked_threads
The following thread queue is used to maintain a list of tasks which currently have outstanding remot...
Definition: mpciimpl.h:78
uint32_t States_Control
The following type defines the control block used to manage a thread&#39;s state.
Definition: states.h:41
RTEMS_INLINE_ROUTINE bool _Mp_packet_Is_valid_packet_class(MP_packet_Classes the_packet_class)
This function returns true if the the_packet_class is valid, and false otherwise. ...
Definition: mpciimpl.h:340
Thread_Control * _MPCI_Process_response(MP_packet_Prefix *the_packet)
Pass a packet to the thread.
Definition: mpci.c:248
MPCI_Internal_Remote_operations
The following enumerated type defines the list of internal MP operations.
Definition: mpciimpl.h:51
void _MPCI_Send_response_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Send a response packet.
Definition: mpci.c:229
void _MPCI_Announce(void)
Announce the availability of a packet.
Definition: mpci.c:331
void * Thread
The following defines the "return type" of a thread.
Definition: thread.h:99
#define SCORE_EXTERN
The following ensures that all data is declared in the space of the initialization routine for either...
Definition: basedefs.h:81
SCORE_EXTERN Thread_Control * _MPCI_Receive_server_tcb
Pointer to MP thread control block.
Definition: mpciimpl.h:93
void _MPCI_Register_packet_processor(MP_packet_Classes the_class, MPCI_Packet_processor the_packet_processor)
This routine registers the MPCI packet processor for the designated object class. ...
Definition: mpci.c:136
SCORE_EXTERN MPCI_Control * _MPCI_table
The following define the internal pointers to the user&#39;s configuration information.
Definition: mpciimpl.h:84
void _MPCI_Internal_packets_Process_packet(MP_packet_Prefix *the_packet_prefix)
_MPCI_Internal_packets_Send_request_packet
Definition: mpci.c:380