source: rtems/cpukit/rtems/include/rtems/rtems/regionmp.h @ 5e9b32b

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