RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
25extern "C" {
26#endif
27
40#define MPCI_DEFAULT_TIMEOUT 0xFFFFFFFF
41
47
52typedef enum {
53 MPCI_PACKETS_SYSTEM_VERIFY = 0
55
60typedef 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
136 MP_packet_Prefix *the_packet
137);
138
149 uint32_t destination,
150 MP_packet_Prefix *the_packet
151);
152
168Status_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
230void _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 */
MPCI Layer API.
#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
MPCI_Internal_Remote_operations
Definition: mpciimpl.h:52
void _MPCI_Send_response_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Sends a response packet.
Definition: mpci.c:269
MPCI_Packet_processor _MPCI_Packet_processors[MP_PACKET_CLASSES_LAST+1]
Definition: mpci.c:56
void _MPCI_Return_packet(MP_packet_Prefix *the_packet)
Deallocates a packet.
Definition: mpci.c:189
void _MPCI_Internal_packets_Send_process_packet(MPCI_Internal_Remote_operations operation)
Performs a process on another node.
Definition: mpci.c:379
MPCI_Control * _MPCI_table
Definition: mpci.c:52
Thread_Control * _MPCI_Process_response(MP_packet_Prefix *the_packet)
Passes a packet to the thread.
Definition: mpci.c:288
MP_packet_Prefix * _MPCI_Receive_packet(void)
Receives a packet.
Definition: mpci.c:279
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
void _MPCI_Announce(void)
Announces the availability of a packet.
Definition: mpci.c:366
Thread_queue_Control _MPCI_Remote_blocked_threads
Definition: mpci.c:49
Thread_Control * _MPCI_Receive_server_tcb
Pointer to MP thread control block.
Definition: mpci.c:54
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
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
MP_packet_Prefix * _MPCI_Get_packet(void)
Obtains a packet by invoking the user provided MPCI get packet callout.
Definition: mpci.c:170
void _MPCI_Internal_packets_Process_packet(MP_packet_Prefix *the_packet_prefix)
Performs requested action from another node.
Definition: mpci.c:420
void _MPCI_Receive_server(Thread_Entry_numeric_type ignored)
Receives and processes all packets.
Definition: mpci.c:316
MPCI_Internal_packet * _MPCI_Internal_packets_Get_packet(void)
Obtains an internal thread.
Definition: mpci.c:466
void(* MPCI_Packet_processor)(MP_packet_Prefix *)
Definition: mpciimpl.h:46
#define MP_PACKET_CLASSES_LAST
Definition: mppkt.h:75
MP_packet_Classes
Definition: mppkt.h:56
uint32_t States_Control
Definition: states.h:46
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
Definition: mpci.h:111
Definition: mpciimpl.h:60
MP_packet_Prefix Prefix
Definition: mpciimpl.h:62
MPCI_Internal_Remote_operations operation
Definition: mpciimpl.h:64
uint32_t maximum_global_objects
Definition: mpciimpl.h:72
uint32_t maximum_nodes
Definition: mpciimpl.h:68
Definition: mppkt.h:85
Definition: threadq.h:553
Definition: thread.h:732