source: rtems/c/src/exec/rtems/headers/msgmp.h @ eb5a7e07

4.104.114.84.95
Last change on this file since eb5a7e07 was 5e9b32b, checked in by Joel Sherrill <joel.sherrill@…>, on 09/26/95 at 19:27:15

posix support initially added

  • Property mode set to 100644
File size: 4.6 KB
Line 
1/*  msgmp.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the Multiprocessing Support in the Message Manager.
5 *
6 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
7 *  On-Line Applications Research Corporation (OAR).
8 *  All rights assigned to U.S. Government, 1994.
9 *
10 *  This material may be reproduced by or for the U.S. Government pursuant
11 *  to the copyright license under the clause at DFARS 252.227-7013.  This
12 *  notice must appear in all copies of this file and its derivatives.
13 *
14 *  $Id$
15 */
16
17#ifndef __RTEMS_MESSAGE_QUEUE_MP_h
18#define __RTEMS_MESSAGE_QUEUE_MP_h
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#include <rtems/rtems/message.h>
25#include <rtems/score/mppkt.h>
26#include <rtems/score/object.h>
27#include <rtems/rtems/options.h>
28#include <rtems/score/thread.h>
29#include <rtems/score/watchdog.h>
30
31/*
32 *  The following enumerated type defines the list of
33 *  remote message queue operations.
34 */
35
36typedef enum {
37  MESSAGE_QUEUE_MP_ANNOUNCE_CREATE     =  0,
38  MESSAGE_QUEUE_MP_ANNOUNCE_DELETE     =  1,
39  MESSAGE_QUEUE_MP_EXTRACT_PROXY       =  2,
40  MESSAGE_QUEUE_MP_RECEIVE_REQUEST     =  3,
41  MESSAGE_QUEUE_MP_RECEIVE_RESPONSE    =  4,
42  MESSAGE_QUEUE_MP_SEND_REQUEST        =  5,
43  MESSAGE_QUEUE_MP_SEND_RESPONSE       =  6,
44  MESSAGE_QUEUE_MP_URGENT_REQUEST      =  7,
45  MESSAGE_QUEUE_MP_URGENT_RESPONSE     =  8,
46  MESSAGE_QUEUE_MP_BROADCAST_REQUEST   =  9,
47  MESSAGE_QUEUE_MP_BROADCAST_RESPONSE  = 10,
48  MESSAGE_QUEUE_MP_FLUSH_REQUEST       = 11,
49  MESSAGE_QUEUE_MP_FLUSH_RESPONSE      = 12
50}   Message_queue_MP_Remote_operations;
51
52/*
53 *  The following data structure defines the packet used to perform
54 *  remote message queue operations.
55 */
56
57typedef struct {
58  rtems_packet_prefix                Prefix;
59  Message_queue_MP_Remote_operations operation;
60  rtems_name                         name;
61  rtems_option                       option_set;
62  Objects_Id                         proxy_id;
63  unsigned32                         count;
64  unsigned32                         size;
65  unsigned32                         pad0;
66  CORE_message_queue_Buffer          Buffer;
67}   Message_queue_MP_Packet;
68
69/*
70 *  _Message_queue_MP_Send_process_packet
71 *
72 *  DESCRIPTION:
73 *
74 *  This routine performs a remote procedure call so that a
75 *  process operation can be performed on another node.
76 */
77
78void _Message_queue_MP_Send_process_packet (
79  Message_queue_MP_Remote_operations operation,
80  Objects_Id                         message_queue_id,
81  rtems_name                         name,
82  Objects_Id                         proxy_id
83);
84
85/*
86 *  _Message_queue_MP_Send_request_packet
87 *
88 *  DESCRIPTION:
89 *
90 *  This routine performs a remote procedure call so that a
91 *  directive operation can be initiated on another node.
92 */
93
94rtems_status_code _Message_queue_MP_Send_request_packet (
95  Message_queue_MP_Remote_operations  operation,
96  Objects_Id                          message_queue_id,
97  void                               *buffer,
98  unsigned32                         *size_p,
99  rtems_option                        option_set,
100  Watchdog_Interval                   timeout
101);
102
103/*
104 *  _Message_queue_MP_Send_response_packet
105 *
106 *  DESCRIPTION:
107 *
108 *  This routine performs a remote procedure call so that a
109 *  directive can be performed on another node.
110 */
111
112void _Message_queue_MP_Send_response_packet (
113  Message_queue_MP_Remote_operations  operation,
114  Objects_Id                          message_queue_id,
115  Thread_Control                     *the_thread
116);
117
118/*
119 *
120 *  _Message_queue_MP_Process_packet
121 *
122 *  DESCRIPTION:
123 *
124 *  This routine performs the actions specific to this package for
125 *  the request from another node.
126 */
127
128void _Message_queue_MP_Process_packet (
129  rtems_packet_prefix *the_packet_prefix
130);
131
132/*
133 *  _Message_queue_MP_Send_object_was_deleted
134 *
135 *  DESCRIPTION:
136 *
137 *  This routine is invoked indirectly by the thread queue
138 *  when a proxy has been removed from the thread queue and
139 *  the remote node must be informed of this.
140 */
141
142void _Message_queue_MP_Send_object_was_deleted (
143  Thread_Control *the_proxy
144);
145
146/*
147 *  _Message_queue_MP_Send_extract_proxy
148 *
149 *  DESCRIPTION:
150 *
151 *  This routine is invoked when a task is deleted and it
152 *  has a proxy which must be removed from a thread queue and
153 *  the remote node must be informed of this.
154 */
155
156void _Message_queue_MP_Send_extract_proxy (
157  Thread_Control *the_thread
158);
159
160/*
161 *  _Message_queue_MP_Get_packet
162 *
163 *  DESCRIPTION:
164 *
165 *  This function is used to obtain a message queue mp packet.
166 */
167
168Message_queue_MP_Packet *_Message_queue_MP_Get_packet ( void );
169
170#ifdef __cplusplus
171}
172#endif
173
174#endif
175/* end of file */
Note: See TracBrowser for help on using the repository browser.