RTEMS  5.0.0
msgmp.h
Go to the documentation of this file.
1 
10 /* COPYRIGHT (c) 1989-2013.
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_RTEMS_MSGMP_H
19 #define _RTEMS_RTEMS_MSGMP_H
20 
21 #ifndef _RTEMS_RTEMS_MESSAGEIMPL_H
22 # error "Never use <rtems/rtems/msgmp.h> directly; include <rtems/rtems/messageimpl.h> instead."
23 #endif
24 
25 #include <rtems/score/mpciimpl.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
39 /*{*/
40 
45 typedef enum {
46  MESSAGE_QUEUE_MP_ANNOUNCE_CREATE = 0,
47  MESSAGE_QUEUE_MP_ANNOUNCE_DELETE = 1,
48  MESSAGE_QUEUE_MP_EXTRACT_PROXY = 2,
49  MESSAGE_QUEUE_MP_RECEIVE_REQUEST = 3,
50  MESSAGE_QUEUE_MP_RECEIVE_RESPONSE = 4,
51  MESSAGE_QUEUE_MP_SEND_REQUEST = 5,
52  MESSAGE_QUEUE_MP_SEND_RESPONSE = 6,
53  MESSAGE_QUEUE_MP_URGENT_REQUEST = 7,
54  MESSAGE_QUEUE_MP_URGENT_RESPONSE = 8,
55  MESSAGE_QUEUE_MP_BROADCAST_REQUEST = 9,
56  MESSAGE_QUEUE_MP_BROADCAST_RESPONSE = 10,
57  MESSAGE_QUEUE_MP_FLUSH_REQUEST = 11,
58  MESSAGE_QUEUE_MP_FLUSH_RESPONSE = 12,
59  MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST = 13,
60  MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE = 14
62 
67 typedef struct {
68  rtems_packet_prefix Prefix;
70  rtems_name name;
71  rtems_option option_set;
72  Objects_Id proxy_id;
73  uint32_t count;
74  size_t size;
75  uint32_t pad0;
78 
79 #define MESSAGE_QUEUE_MP_PACKET_SIZE \
80  offsetof(Message_queue_MP_Packet, Buffer.buffer)
81 
82 RTEMS_INLINE_ROUTINE bool _Message_queue_MP_Is_remote( Objects_Id id )
83 {
85 }
86 
97  Thread_Control *the_thread,
98  rtems_id id
99 );
100 
109  Objects_Id message_queue_id,
110  rtems_name name,
111  Objects_Id proxy_id
112 );
113 
118  rtems_id id,
119  const void *buffer,
120  size_t size,
121  uint32_t *count
122 );
123 
128  rtems_id id,
129  uint32_t *count
130 );
131 
136  rtems_id id,
137  uint32_t *count
138 );
139 
144  rtems_id id,
145  void *buffer,
146  size_t *size,
147  rtems_option option_set,
148  rtems_interval timeout
149 );
150 
155  rtems_id id,
156  const void *buffer,
157  size_t size
158 );
159 
164  rtems_id id,
165  const void *buffer,
166  size_t size
167 );
168 
177  rtems_packet_prefix *the_packet_prefix
178 );
179 
188  Thread_Control *the_proxy,
189  Objects_Id mp_id
190 );
191 
194 #ifdef __cplusplus
195 }
196 #endif
197 
198 #endif
199 /* end of file */
rtems_status_code _Message_queue_MP_Receive(rtems_id id, void *buffer, size_t *size, rtems_option option_set, rtems_interval timeout)
Issues a remote rtems_message_queue_receive() request.
Definition: msgmp.c:257
void _Message_queue_MP_Send_object_was_deleted(Thread_Control *the_proxy, Objects_Id mp_id)
_Message_queue_MP_Send_object_was_deleted
Definition: msgmp.c:547
Watchdog_Interval rtems_interval
Used to manage and manipulate intervals specified by clock ticks.
Definition: types.h:127
uint32_t rtems_name
Classic API object name type.
Definition: types.h:77
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
void _Message_queue_MP_Process_packet(rtems_packet_prefix *the_packet_prefix)
_Message_queue_MP_Process_packet
Definition: msgmp.c:370
rtems_status_code _Message_queue_MP_Send(rtems_id id, const void *buffer, size_t size)
Issues a remote rtems_message_queue_send() request.
Definition: msgmp.c:275
Objects_Information _Message_queue_Information
The Classic Message Queue objects information.
rtems_status_code
Classic API Status.
Definition: status.h:43
Definition: thread.h:728
void _Message_queue_MP_Send_process_packet(Message_queue_MP_Remote_operations operation, Objects_Id message_queue_id, rtems_name name, Objects_Id proxy_id)
_Message_queue_MP_Send_process_packet
Definition: msgmp.c:44
rtems_status_code _Message_queue_MP_Broadcast(rtems_id id, const void *buffer, size_t size, uint32_t *count)
Issues a remote rtems_message_queue_broadcast() request.
Definition: msgmp.c:207
bool _Objects_MP_Is_remote(Objects_Id id, const Objects_Information *information)
Returns true, if the object identifier is in the global object identifier cache of the specified obje...
Definition: objectmp.c:341
uint32_t rtems_option
Definition: options.h:42
rtems_status_code _Message_queue_MP_Flush(rtems_id id, uint32_t *count)
Issues a remote rtems_message_queue_flush() request.
Definition: msgmp.c:225
Data types needed to manipulate the contents of message buffers.
Definition: coremsg.h:74
Message_queue_MP_Remote_operations
Definition: msgmp.h:45
void _Message_queue_Core_message_queue_mp_support(Thread_Control *the_thread, rtems_id id)
Message_queue_Core_message_queue_mp_support.
Definition: msgmp.c:579
rtems_status_code _Message_queue_MP_Urgent(rtems_id id, const void *buffer, size_t size)
Issues a remote rtems_message_queue_urgent() request.
Definition: msgmp.c:291
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:83
rtems_status_code _Message_queue_MP_Get_number_pending(rtems_id id, uint32_t *count)
Issues a remote rtems_message_queue_get_number_pending() request.
Definition: msgmp.c:241
unsigned size
Definition: tte.h:74
uint32_t Objects_Id
Definition: object.h:75
Definition: msgmp.h:67
MPCI Layer Implementation.