source: rtems/cpukit/rtems/include/rtems/rtems/partmp.h @ 092f142a

4.104.114.84.95
Last change on this file since 092f142a was 092f142a, checked in by Ralf Corsepius <ralf.corsepius@…>, on 01/28/05 at 05:00:21

New header guard.

  • Property mode set to 100644
File size: 3.7 KB
Line 
1/**
2 * @file rtems/rtems/partmp.h
3 */
4
5/*
6 *  This include file contains all the constants and structures associated
7 *  with the Multiprocessing Support in the Partition Manager.
8 *
9 *  COPYRIGHT (c) 1989-1999.
10 *  On-Line Applications Research Corporation (OAR).
11 *
12 *  The license and distribution terms for this file may be
13 *  found in the file LICENSE in this distribution or at
14 *  http://www.rtems.com/license/LICENSE.
15 *
16 *  $Id$
17 */
18
19#ifndef _RTEMS_RTEMS_PARTMP_H
20#define _RTEMS_RTEMS_PARTMP_H
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#include <rtems/score/mppkt.h>
27#include <rtems/score/object.h>
28#include <rtems/rtems/options.h>
29#include <rtems/score/thread.h>
30
31#include <rtems/rtems/part.h>
32
33/*
34 *  The following enumerated type defines the list of
35 *  remote partition operations.
36 */
37
38typedef enum {
39  PARTITION_MP_ANNOUNCE_CREATE        =  0,
40  PARTITION_MP_ANNOUNCE_DELETE        =  1,
41  PARTITION_MP_EXTRACT_PROXY          =  2,
42  PARTITION_MP_GET_BUFFER_REQUEST     =  3,
43  PARTITION_MP_GET_BUFFER_RESPONSE    =  4,
44  PARTITION_MP_RETURN_BUFFER_REQUEST  =  5,
45  PARTITION_MP_RETURN_BUFFER_RESPONSE =  6
46}   Partition_MP_Remote_operations;
47
48/*
49 *  The following data structure defines the packet used to perform
50 *  remote partition operations.
51 */
52
53typedef struct {
54  rtems_packet_prefix             Prefix;
55  Partition_MP_Remote_operations  operation;
56  rtems_name                      name;
57  void                           *buffer;
58  Objects_Id                      proxy_id;
59}   Partition_MP_Packet;
60
61/*
62 *  _Partition_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 _Partition_MP_Send_process_packet (
71  Partition_MP_Remote_operations operation,
72  Objects_Id                     partition_id,
73  rtems_name                     name,
74  Objects_Id                     proxy_id
75);
76
77/*
78 *  _Partition_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 _Partition_MP_Send_request_packet (
87  Partition_MP_Remote_operations  operation,
88  Objects_Id                      partition_id,
89  void                           *buffer
90);
91
92/*
93 *  _Partition_MP_Send_response_packet
94 *
95 *  DESCRIPTION:
96 *
97 *  This routine performs a remote procedure call so that a
98 *  directive can be performed on another node.
99 */
100
101void _Partition_MP_Send_response_packet (
102  Partition_MP_Remote_operations  operation,
103  Objects_Id                      partition_id,
104  Thread_Control                 *the_thread
105);
106
107/*
108 *
109 *  _Partition_MP_Process_packet
110 *
111 *  DESCRIPTION:
112 *
113 *  This routine performs the actions specific to this package for
114 *  the request from another node.
115 */
116
117void _Partition_MP_Process_packet (
118  rtems_packet_prefix *the_packet_prefix
119);
120
121/*
122 *  _Partition_MP_Send_object_was_deleted
123 *
124 *  DESCRIPTION:
125 *
126 *  This routine is invoked indirectly by the thread queue
127 *  when a proxy has been removed from the thread queue and
128 *  the remote node must be informed of this.
129 *
130 *  This routine is not needed by the Partition since a partition
131 *  cannot be deleted when buffers are in use.
132 */
133
134/*
135 *  _Partition_MP_Send_extract_proxy
136 *
137 *  DESCRIPTION:
138 *
139 *  This routine is invoked when a task is deleted and it
140 *  has a proxy which must be removed from a thread queue and
141 *  the remote node must be informed of this.
142 */
143
144void _Partition_MP_Send_extract_proxy (
145  void           *argument
146);
147
148/*
149 *  _Partition_MP_Get_packet
150 *
151 *  DESCRIPTION:
152 *
153 *  This function is used to obtain a partition mp packet.
154 */
155
156Partition_MP_Packet *_Partition_MP_Get_packet ( void );
157
158#ifdef __cplusplus
159}
160#endif
161
162#endif
163/* end of file */
Note: See TracBrowser for help on using the repository browser.