source: rtems/c/src/exec/rtems/headers/partmp.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.8 KB
Line 
1/*  partmp.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the Multiprocessing Support in the Partition 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_PARTITION_MP_h
18#define __RTEMS_PARTITION_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/rtems/options.h>
27#include <rtems/score/thread.h>
28
29#include <rtems/rtems/part.h>
30
31/*
32 *  The following enumerated type defines the list of
33 *  remote partition operations.
34 */
35
36typedef enum {
37  PARTITION_MP_ANNOUNCE_CREATE        =  0,
38  PARTITION_MP_ANNOUNCE_DELETE        =  1,
39  PARTITION_MP_EXTRACT_PROXY          =  2,
40  PARTITION_MP_GET_BUFFER_REQUEST     =  3,
41  PARTITION_MP_GET_BUFFER_RESPONSE    =  4,
42  PARTITION_MP_RETURN_BUFFER_REQUEST  =  5,
43  PARTITION_MP_RETURN_BUFFER_RESPONSE =  6
44}   Partition_MP_Remote_operations;
45
46/*
47 *  The following data structure defines the packet used to perform
48 *  remote partition operations.
49 */
50
51typedef struct {
52  rtems_packet_prefix             Prefix;
53  Partition_MP_Remote_operations  operation;
54  rtems_name                      name;
55  void                           *buffer;
56  Objects_Id                      proxy_id;
57}   Partition_MP_Packet;
58
59/*
60 *  _Partition_MP_Send_process_packet
61 *
62 *  DESCRIPTION:
63 *
64 *  This routine performs a remote procedure call so that a
65 *  process operation can be performed on another node.
66 */
67
68void _Partition_MP_Send_process_packet (
69  Partition_MP_Remote_operations operation,
70  Objects_Id                     partition_id,
71  rtems_name                     name,
72  Objects_Id                     proxy_id
73);
74
75/*
76 *  _Partition_MP_Send_request_packet
77 *
78 *  DESCRIPTION:
79 *
80 *  This routine performs a remote procedure call so that a
81 *  directive operation can be initiated on another node.
82 */
83
84rtems_status_code _Partition_MP_Send_request_packet (
85  Partition_MP_Remote_operations  operation,
86  Objects_Id                      partition_id,
87  void                           *buffer
88);
89
90/*
91 *  _Partition_MP_Send_response_packet
92 *
93 *  DESCRIPTION:
94 *
95 *  This routine performs a remote procedure call so that a
96 *  directive can be performed on another node.
97 */
98
99void _Partition_MP_Send_response_packet (
100  Partition_MP_Remote_operations  operation,
101  Objects_Id                      partition_id,
102  Thread_Control                 *the_thread
103);
104
105/*
106 *
107 *  _Partition_MP_Process_packet
108 *
109 *  DESCRIPTION:
110 *
111 *  This routine performs the actions specific to this package for
112 *  the request from another node.
113 */
114
115void _Partition_MP_Process_packet (
116  rtems_packet_prefix *the_packet_prefix
117);
118
119/*
120 *  _Partition_MP_Send_object_was_deleted
121 *
122 *  DESCRIPTION:
123 *
124 *  This routine is invoked indirectly by the thread queue
125 *  when a proxy has been removed from the thread queue and
126 *  the remote node must be informed of this.
127 *
128 *  This routine is not needed by the Partition since a partition
129 *  cannot be deleted when buffers are in use.
130 */
131
132/*
133 *  _Partition_MP_Send_extract_proxy
134 *
135 *  DESCRIPTION:
136 *
137 *  This routine is invoked when a task is deleted and it
138 *  has a proxy which must be removed from a thread queue and
139 *  the remote node must be informed of this.
140 */
141
142void _Partition_MP_Send_extract_proxy (
143  Thread_Control *the_thread
144);
145
146/*
147 *  _Partition_MP_Get_packet
148 *
149 *  DESCRIPTION:
150 *
151 *  This function is used to obtain a partition mp packet.
152 */
153
154Partition_MP_Packet *_Partition_MP_Get_packet ( void );
155
156#ifdef __cplusplus
157}
158#endif
159
160#endif
161/* end of file */
Note: See TracBrowser for help on using the repository browser.