RTEMS  5.1
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 #include <rtems/score/status.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
40 #define MPCI_DEFAULT_TIMEOUT 0xFFFFFFFF
41 
47 
52 typedef enum {
53  MPCI_PACKETS_SYSTEM_VERIFY = 0
55 
60 typedef struct {
68  uint32_t maximum_nodes;
74 
80 
86 
95 
102 
112  MP_packet_Classes the_class,
113  MPCI_Packet_processor the_packet_processor
114 
115 );
116 
126 
135 void _MPCI_Return_packet (
136  MP_packet_Prefix *the_packet
137 );
138 
149  uint32_t destination,
150  MP_packet_Prefix *the_packet
151 );
152 
168 Status_Control _MPCI_Send_request_packet(
169  uint32_t destination,
170  MP_packet_Prefix *the_packet,
171  States_Control extra_state
172 );
173 
184  uint32_t destination,
185  MP_packet_Prefix *the_packet
186 );
187 
197 
211  MP_packet_Prefix *the_packet
212 );
213 
223 );
224 
230 void _MPCI_Announce ( void );
231 
242 );
243 
273  MP_packet_Prefix *the_packet_prefix
274 );
275 
307 
321  MP_packet_Classes the_packet_class
322 )
323 {
324  return ( the_packet_class <= MP_PACKET_CLASSES_LAST );
325 }
326 
329 #ifdef __cplusplus
330 }
331 #endif
332 
333 #endif
334 /* end of include file */
Definition: mppkt.h:85
MPCI_Control * _MPCI_table
Definition: mpci.c:52
MP_packet_Prefix * _MPCI_Receive_packet(void)
Receives a packet.
Definition: mpci.c:279
void _MPCI_Announce(void)
Announces the availability of a packet.
Definition: mpci.c:366
void _MPCI_Receive_server(Thread_Entry_numeric_type ignored)
Receives and processes all packets.
Definition: mpci.c:316
void _MPCI_Internal_packets_Send_process_packet(MPCI_Internal_Remote_operations operation)
Performs a process on another node.
Definition: mpci.c:379
void _MPCI_Internal_packets_Process_packet(MP_packet_Prefix *the_packet_prefix)
Performs requested action from another node.
Definition: mpci.c:420
Thread_Control * _MPCI_Receive_server_tcb
Pointer to MP thread control block.
Definition: mpci.c:54
void(* MPCI_Packet_processor)(MP_packet_Prefix *)
Definition: mpciimpl.h:46
uint32_t maximum_global_objects
Definition: mpciimpl.h:72
Definition: threadq.h:552
Status_Control _MPCI_Send_request_packet(uint32_t destination, MP_packet_Prefix *the_packet, States_Control extra_state)
Sends a request packet.
Definition: mpci.c:219
CPU_Uint32ptr Thread_Entry_numeric_type
Type of the numeric argument of a thread entry function with at least one numeric argument.
Definition: thread.h:107
MP_packet_Classes
Definition: mppkt.h:56
void _MPCI_Register_packet_processor(MP_packet_Classes the_class, MPCI_Packet_processor the_packet_processor)
Registers the MPCI packet processor for the designated object class.
Definition: mpci.c:161
uint32_t States_Control
Definition: states.h:46
#define MP_PACKET_CLASSES_LAST
Definition: mppkt.h:75
void _MPCI_Send_response_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Sends a response packet.
Definition: mpci.c:269
uint32_t maximum_nodes
Definition: mpciimpl.h:68
Definition: thread.h:732
void _MPCI_Return_packet(MP_packet_Prefix *the_packet)
Deallocates a packet.
Definition: mpci.c:189
Definition: mpci.h:111
MPCI_Internal_Remote_operations operation
Definition: mpciimpl.h:64
Definition: mpciimpl.h:60
MPCI Layer API.
MP_packet_Prefix Prefix
Definition: mpciimpl.h:62
RTEMS_INLINE_ROUTINE bool _Mp_packet_Is_valid_packet_class(MP_packet_Classes the_packet_class)
Checks if the packet class is valid.
Definition: mpciimpl.h:320
MPCI_Internal_packet * _MPCI_Internal_packets_Get_packet(void)
Obtains an internal thread.
Definition: mpci.c:466
Thread_Control * _MPCI_Process_response(MP_packet_Prefix *the_packet)
Passes a packet to the thread.
Definition: mpci.c:288
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
void _MPCI_Send_process_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Sends a process packet.
Definition: mpci.c:196
Thread_queue_Control _MPCI_Remote_blocked_threads
Definition: mpci.c:49
MPCI_Packet_processor _MPCI_Packet_processors[MP_PACKET_CLASSES_LAST+1]
Definition: mpci.c:56
MPCI_Internal_Remote_operations
Definition: mpciimpl.h:52
MP_packet_Prefix * _MPCI_Get_packet(void)
Obtains a packet by invoking the user provided MPCI get packet callout.
Definition: mpci.c:170