source: rtems/c/src/exec/rtems/include/rtems/rtems/regionmp.h @ ac7d5ef0

4.104.114.84.95
Last change on this file since ac7d5ef0 was ac7d5ef0, checked in by Joel Sherrill <joel.sherrill@…>, on 05/11/95 at 17:39:37

Initial revision

  • Property mode set to 100644
File size: 3.9 KB
Line 
1/*  regionmp.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the Multiprocessing Support in the Region 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_REGION_MP_h
18#define __RTEMS_REGION_MP_h
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#include <rtems/mppkt.h>
25#include <rtems/object.h>
26#include <rtems/options.h>
27#include <rtems/region.h>
28#include <rtems/thread.h>
29
30/*
31 *  The following enumerated type defines the list of
32 *  remote region operations.
33 */
34
35typedef enum {
36  REGION_MP_ANNOUNCE_CREATE         =  0,
37  REGION_MP_ANNOUNCE_DELETE         =  1,
38  REGION_MP_EXTRACT_PROXY           =  2,
39  REGION_MP_GET_SEGMENT_REQUEST     =  3,
40  REGION_MP_GET_SEGMENT_RESPONSE    =  4,
41  REGION_MP_RETURN_SEGMENT_REQUEST  =  5,
42  REGION_MP_RETURN_SEGMENT_RESPONSE =  6,
43}   Region_MP_Remote_operations;
44
45/*
46 *  The following data structure defines the packet used to perform
47 *  remote region operations.
48 */
49
50typedef struct {
51  rtems_packet_prefix             Prefix;
52  Region_MP_Remote_operations  operation;
53  Objects_Name                 name;
54  rtems_option              option_set;
55  unsigned32                   size;
56  Objects_Id                   proxy_id;
57  void                        *segment;
58}   Region_MP_Packet;
59
60/*
61 *  _Region_MP_Send_process_packet
62 *
63 *  DESCRIPTION:
64 *
65 *  This routine performs a remote procedure call so that a
66 *  process operation can be performed on another node.
67 */
68
69void _Region_MP_Send_process_packet (
70  Region_MP_Remote_operations operation,
71  Objects_Id                  region_id,
72  Objects_Name                name,
73  Objects_Id                  proxy_id
74);
75
76/*
77 *  _Region_MP_Send_request_packet
78 *
79 *  DESCRIPTION:
80 *
81 *  This routine performs a remote procedure call so that a
82 *  directive operation can be initiated on another node.
83 */
84
85rtems_status_code _Region_MP_Send_request_packet (
86  Region_MP_Remote_operations  operation,
87  Objects_Id                   region_id,
88  void                        *segment,
89  unsigned32                   size,
90  rtems_option              option_set,
91  rtems_interval            timeout
92);
93
94/*
95 *  _Region_MP_Send_response_packet
96 *
97 *  DESCRIPTION:
98 *
99 *  This routine performs a remote procedure call so that a
100 *  directive can be performed on another node.
101 */
102
103void _Region_MP_Send_response_packet (
104  Region_MP_Remote_operations  operation,
105  Objects_Id                   region_id,
106  Thread_Control              *the_thread
107);
108
109/*
110 *
111 *  _Region_MP_Process_packet
112 *
113 *  DESCRIPTION:
114 *
115 *  This routine performs the actions specific to this package for
116 *  the request from another node.
117 */
118
119void _Region_MP_Process_packet (
120  rtems_packet_prefix *the_packet_prefix
121);
122
123/*
124 *  _Region_MP_Send_object_was_deleted
125 *
126 *  DESCRIPTION:
127 *
128 *  This routine is invoked indirectly by the thread queue
129 *  when a proxy has been removed from the thread queue and
130 *  the remote node must be informed of this.
131 *
132 *  This routine is not needed by the Region since a region
133 *  cannot be deleted when segments are in use.
134 */
135
136/*
137 *  _Region_MP_Send_extract_proxy
138 *
139 *  DESCRIPTION:
140 *
141 *  This routine is invoked when a task is deleted and it
142 *  has a proxy which must be removed from a thread queue and
143 *  the remote node must be informed of this.
144 */
145
146void _Region_MP_Send_extract_proxy (
147  Thread_Control *the_thread
148);
149
150/*
151 *  _Region_MP_Get_packet
152 *
153 *  DESCRIPTION:
154 *
155 *  This function is used to obtain a region mp packet.
156 */
157
158Region_MP_Packet *_Region_MP_Get_packet ( void );
159
160#ifdef __cplusplus
161}
162#endif
163
164#endif
165/* end of file */
Note: See TracBrowser for help on using the repository browser.