RTEMS 6.1-rc5
Loading...
Searching...
No Matches
mpciimpl.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
12/*
13 * COPYRIGHT (c) 1989-2009.
14 * On-Line Applications Research Corporation (OAR).
15 *
16 * Redistribution and use in source and binary forms, with or without
17 * modification, are permitted provided that the following conditions
18 * are met:
19 * 1. Redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer.
21 * 2. Redistributions in binary form must reproduce the above copyright
22 * notice, this list of conditions and the following disclaimer in the
23 * documentation and/or other materials provided with the distribution.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
29 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 */
37
38#ifndef _RTEMS_SCORE_MPCIIMPL_H
39#define _RTEMS_SCORE_MPCIIMPL_H
40
41#include <rtems/score/mpci.h>
42#include <rtems/score/thread.h>
43#include <rtems/score/threadq.h>
45#include <rtems/score/status.h>
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
63#define MPCI_DEFAULT_TIMEOUT 0xFFFFFFFF
64
70
75typedef enum {
76 MPCI_PACKETS_SYSTEM_VERIFY = 0
78
83typedef struct {
91 uint32_t maximum_nodes;
97
103
109
118
125
135 MP_packet_Classes the_class,
136 MPCI_Packet_processor the_packet_processor
137
138);
139
149
159 MP_packet_Prefix *the_packet
160);
161
172 uint32_t destination,
173 MP_packet_Prefix *the_packet
174);
175
192 uint32_t destination,
193 MP_packet_Prefix *the_packet,
194 States_Control extra_state
195);
196
207 uint32_t destination,
208 MP_packet_Prefix *the_packet
209);
210
220
234 MP_packet_Prefix *the_packet
235);
236
246);
247
253void _MPCI_Announce ( void );
254
265);
266
296 MP_packet_Prefix *the_packet_prefix
297);
298
330
343static inline bool _Mp_packet_Is_valid_packet_class (
344 MP_packet_Classes the_packet_class
345)
346{
347 return ( the_packet_class <= MP_PACKET_CLASSES_LAST );
348}
349
352#ifdef __cplusplus
353}
354#endif
355
356#endif
357/* end of include file */
This header file provides interfaces of the MPCI Handler which are used by the implementation and the...
This header file provides interfaces of the Watchdog Handler which are used by the implementation and...
void _MPCI_Send_process_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Sends a process packet.
Definition: mpci.c:224
MPCI_Internal_Remote_operations
Definition: mpciimpl.h:75
void _MPCI_Send_response_packet(uint32_t destination, MP_packet_Prefix *the_packet)
Sends a response packet.
Definition: mpci.c:297
MPCI_Packet_processor _MPCI_Packet_processors[MP_PACKET_CLASSES_LAST+1]
Definition: mpci.c:86
void _MPCI_Return_packet(MP_packet_Prefix *the_packet)
Deallocates a packet.
Definition: mpci.c:217
void _MPCI_Internal_packets_Send_process_packet(MPCI_Internal_Remote_operations operation)
Performs a process on another node.
Definition: mpci.c:408
MPCI_Control * _MPCI_table
Definition: mpci.c:82
Thread_Control * _MPCI_Process_response(MP_packet_Prefix *the_packet)
Passes a packet to the thread.
Definition: mpci.c:316
MP_packet_Prefix * _MPCI_Receive_packet(void)
Receives a packet.
Definition: mpci.c:307
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:247
void _MPCI_Announce(void)
Announces the availability of a packet.
Definition: mpci.c:395
Thread_queue_Control _MPCI_Remote_blocked_threads
Definition: mpci.c:79
Thread_Control * _MPCI_Receive_server_tcb
Pointer to MP thread control block.
Definition: mpci.c:84
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:189
MP_packet_Prefix * _MPCI_Get_packet(void)
Obtains a packet by invoking the user provided MPCI get packet callout.
Definition: mpci.c:198
void _MPCI_Internal_packets_Process_packet(MP_packet_Prefix *the_packet_prefix)
Performs requested action from another node.
Definition: mpci.c:449
void _MPCI_Receive_server(Thread_Entry_numeric_type ignored)
Receives and processes all packets.
Definition: mpci.c:345
MPCI_Internal_packet * _MPCI_Internal_packets_Get_packet(void)
Obtains an internal thread.
Definition: mpci.c:495
void(* MPCI_Packet_processor)(MP_packet_Prefix *)
Definition: mpciimpl.h:69
#define MP_PACKET_CLASSES_LAST
Definition: mppkt.h:92
MP_packet_Classes
Definition: mppkt.h:73
uint32_t States_Control
Definition: states.h:65
Status_Control
Status codes.
Definition: status.h:111
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:134
This header file provides the interfaces of the Operation Status Support.
This header file provides interfaces of the Thread Handler which are used by the implementation and t...
Definition: mpci.h:129
Definition: mpciimpl.h:83
MP_packet_Prefix Prefix
Definition: mpciimpl.h:85
MPCI_Internal_Remote_operations operation
Definition: mpciimpl.h:87
uint32_t maximum_global_objects
Definition: mpciimpl.h:95
uint32_t maximum_nodes
Definition: mpciimpl.h:91
Definition: mppkt.h:102
Definition: threadq.h:609
Definition: thread.h:837
This header file provides interfaces of the Thread Queue Handler which are used by the implementation...