source: rtems/cpukit/rtems/include/rtems/rtems/regionmp.h @ e38a92b

5
Last change on this file since e38a92b was e38a92b, checked in by Sebastian Huber <sebastian.huber@…>, on 05/02/16 at 04:30:49

mpci: Make _*_MP_Get_packet() static

  • Property mode set to 100644
File size: 3.6 KB
Line 
1/**
2 * @file rtems/rtems/regionmp.h
3 *
4 * @defgroup ClassicRegionMP Region MP Support
5 *
6 * @ingroup ClassicMP
7 * @brief Multiprocessing Support in Region Manager
8 *
9 * This include file contains all the constants and structures associated
10 * with the Multiprocessing Support in the Region Manager.
11 */
12
13/* COPYRIGHT (c) 1989-2013.
14 * On-Line Applications Research Corporation (OAR).
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#ifndef _RTEMS_RTEMS_REGIONMP_H
22#define _RTEMS_RTEMS_REGIONMP_H
23
24#ifndef _RTEMS_RTEMS_REGIONIMPL_H
25# error "Never use <rtems/rtems/regionmp.h> directly; include <rtems/rtems/regionimpl.h> instead."
26#endif
27
28#include <rtems/score/mpciimpl.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/**
35 *  @defgroup ClassicRegionMP Region MP Support
36 *
37 *  @ingroup ClassicMP
38 *
39 *  This encapsulates functionality related to the transparent multiprocessing
40 *  support within the Classic API Region Manager.
41 */
42/**@{*/
43
44/**
45 *  The following enumerated type defines the list of
46 *  remote region operations.
47 */
48typedef enum {
49  REGION_MP_ANNOUNCE_CREATE         =  0,
50  REGION_MP_ANNOUNCE_DELETE         =  1,
51  REGION_MP_EXTRACT_PROXY           =  2,
52  REGION_MP_GET_SEGMENT_REQUEST     =  3,
53  REGION_MP_GET_SEGMENT_RESPONSE    =  4,
54  REGION_MP_RETURN_SEGMENT_REQUEST  =  5,
55  REGION_MP_RETURN_SEGMENT_RESPONSE =  6
56}   Region_MP_Remote_operations;
57
58/**
59 *  The following data structure defines the packet used to perform
60 *  remote region operations.
61 */
62typedef struct {
63  rtems_packet_prefix          Prefix;
64  Region_MP_Remote_operations  operation;
65  rtems_name                   name;
66  rtems_option                 option_set;
67  uint32_t                     size;
68  Objects_Id                   proxy_id;
69  void                        *segment;
70}   Region_MP_Packet;
71
72/**
73 *  @brief Region MP Send Process Packet
74 *
75 *  This routine performs a remote procedure call so that a
76 *  process operation can be performed on another node.
77 */
78void _Region_MP_Send_process_packet (
79  Region_MP_Remote_operations operation,
80  Objects_Id                  region_id,
81  rtems_name                  name,
82  Objects_Id                  proxy_id
83);
84
85/**
86 *  @brief Region MP Send Request Packet
87 *
88 *  This routine performs a remote procedure call so that a
89 *  directive operation can be initiated on another node.
90 */
91rtems_status_code _Region_MP_Send_request_packet (
92  Region_MP_Remote_operations  operation,
93  Objects_Id                   region_id,
94  void                        *segment,
95  intptr_t                     size,
96  rtems_option                 option_set,
97  rtems_interval               timeout
98);
99
100/**
101 *  @brief Region MP Process Packet
102 *
103 *  This routine performs the actions specific to this package for
104 *  the request from another node.
105 */
106void _Region_MP_Process_packet (
107  rtems_packet_prefix *the_packet_prefix
108);
109
110/*
111 *  @brief _Region_MP_Send_object_was_deleted
112 *
113 *  This routine is invoked indirectly by the thread queue
114 *  when a proxy has been removed from the thread queue and
115 *  the remote node must be informed of this.
116 *
117 *  This routine is not needed by the Region since a region
118 *  cannot be deleted when segments are in use.
119 */
120
121/**
122 *  @brief Region MP Send Extract Proxy
123 *
124 *  This routine is invoked when a task is deleted and it
125 *  has a proxy which must be removed from a thread queue and
126 *  the remote node must be informed of this.
127 */
128void _Region_MP_Send_extract_proxy (
129  Thread_Control *the_thread,
130  Objects_Id      id
131);
132
133#ifdef __cplusplus
134}
135#endif
136
137/**@}*/
138
139#endif
140/* end of file */
Note: See TracBrowser for help on using the repository browser.