source: rtems/cpukit/include/rtems/rtems/partmp.h

Last change on this file was feea03b6, checked in by Sebastian Huber <sebastian.huber@…>, on Feb 27, 2019 at 9:53:30 AM

Remove explicit file names from @file

This makes the @file documentation independent of the actual file name.

Update #3707.

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/**
2 * @file
3 *
4 * @brief MP Support in Partition Manager
5 *
6 * This include file contains all the constants and structures associated
7 * with the Multiprocessing Support in the Partition Manager.
8 */
9
10/* COPYRIGHT (c) 1989-2013.
11 * On-Line Applications Research Corporation (OAR).
12 *
13 * The license and distribution terms for this file may be
14 * found in the file LICENSE in this distribution or at
15 * http://www.rtems.org/license/LICENSE.
16 */
17
18#ifndef _RTEMS_RTEMS_PARTMP_H
19#define _RTEMS_RTEMS_PARTMP_H
20
21#ifndef _RTEMS_RTEMS_PARTIMPL_H
22# error "Never use <rtems/rtems/partmp.h> directly; include <rtems/rtems/partimpl.h> instead."
23#endif
24
25#include <rtems/score/mpciimpl.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/**
32 *  @defgroup ClassicPartMP Partition MP Support
33 *
34 *  @ingroup ClassicMP
35 *
36 *  This encapsulates functionality related to the transparent multiprocessing
37 *  support within the Classic API Partition Manager.
38 */
39/*{*/
40
41/**
42 *  The following enumerated type defines the list of
43 *  remote partition operations.
44 */
45typedef enum {
46  PARTITION_MP_ANNOUNCE_CREATE        =  0,
47  PARTITION_MP_ANNOUNCE_DELETE        =  1,
48  PARTITION_MP_EXTRACT_PROXY          =  2,
49  PARTITION_MP_GET_BUFFER_REQUEST     =  3,
50  PARTITION_MP_GET_BUFFER_RESPONSE    =  4,
51  PARTITION_MP_RETURN_BUFFER_REQUEST  =  5,
52  PARTITION_MP_RETURN_BUFFER_RESPONSE =  6
53}   Partition_MP_Remote_operations;
54
55/**
56 *  The following data structure defines the packet used to perform
57 *  remote partition operations.
58 */
59typedef struct {
60  rtems_packet_prefix             Prefix;
61  Partition_MP_Remote_operations  operation;
62  rtems_name                      name;
63  void                           *buffer;
64  Objects_Id                      proxy_id;
65}   Partition_MP_Packet;
66
67RTEMS_INLINE_ROUTINE bool _Partition_MP_Is_remote( Objects_Id id )
68{
69  return _Objects_MP_Is_remote( id, &_Partition_Information );
70}
71
72/**
73 *  @brief Partition_MP_Send_process_packet
74 *
75 *  Multiprocessing Support for the Partition Manager
76 *
77 *  This routine performs a remote procedure call so that a
78 *  process operation can be performed on another node.
79 */
80void _Partition_MP_Send_process_packet (
81  Partition_MP_Remote_operations operation,
82  Objects_Id                     partition_id,
83  rtems_name                     name,
84  Objects_Id                     proxy_id
85);
86
87/**
88 * @brief Issues a remote rtems_partition_get_buffer() request.
89 */
90rtems_status_code _Partition_MP_Get_buffer(
91  rtems_id   id,
92  void     **buffer
93);
94
95/**
96 * @brief Issues a remote rtems_partition_return_buffer() request.
97 */
98rtems_status_code _Partition_MP_Return_buffer(
99  rtems_id  id,
100  void     *buffer
101);
102
103/**
104 *
105 *  @brief Partition_MP_Process_packet
106 *
107 *  This routine performs the actions specific to this package for
108 *  the request from another node.
109 */
110void _Partition_MP_Process_packet (
111  rtems_packet_prefix *the_packet_prefix
112);
113
114/*
115 *  @brief Partition_MP_Send_object_was_deleted
116 *
117 *  This routine is invoked indirectly by the thread queue
118 *  when a proxy has been removed from the thread queue and
119 *  the remote node must be informed of this.
120 *
121 *  This routine is not needed by the Partition since a partition
122 *  cannot be deleted when buffers are in use.
123 */
124
125#ifdef __cplusplus
126}
127#endif
128
129/**@}*/
130
131#endif
132/* end of file */
Note: See TracBrowser for help on using the repository browser.