source: rtems/c/src/exec/rtems/headers/semmp.h @ 3235ad9

4.104.114.84.95
Last change on this file since 3235ad9 was 3235ad9, checked in by Joel Sherrill <joel.sherrill@…>, on 08/23/95 at 19:30:23

Support for variable length names added to Object Handler. This supports
both fixed length "raw" names and strings from the API's point of view.

Both inline and macro implementations were tested.

  • Property mode set to 100644
File size: 3.8 KB
Line 
1/*  semmp.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the Multiprocessing Support in the Semaphore 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_SEMAPHORE_MP_h
18#define __RTEMS_SEMAPHORE_MP_h
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#include <rtems/mppkt.h>
25#include <rtems/object.h>
26#include <rtems/options.h>
27#include <rtems/sem.h>
28#include <rtems/thread.h>
29#include <rtems/watchdog.h>
30
31/*
32 *  The following enumerated type defines the list of
33 *  remote semaphore operations.
34 */
35
36typedef enum {
37  SEMAPHORE_MP_ANNOUNCE_CREATE  =  0,
38  SEMAPHORE_MP_ANNOUNCE_DELETE  =  1,
39  SEMAPHORE_MP_EXTRACT_PROXY    =  2,
40  SEMAPHORE_MP_OBTAIN_REQUEST   =  3,
41  SEMAPHORE_MP_OBTAIN_RESPONSE  =  4,
42  SEMAPHORE_MP_RELEASE_REQUEST  =  5,
43  SEMAPHORE_MP_RELEASE_RESPONSE =  6
44}   Semaphore_MP_Remote_operations;
45
46/*
47 *  The following data structure defines the packet used to perform
48 *  remote semaphore operations.
49 */
50
51typedef struct {
52  rtems_packet_prefix             Prefix;
53  Semaphore_MP_Remote_operations  operation;
54  rtems_name                      name;
55  rtems_option                    option_set;
56  Objects_Id                      proxy_id;
57}   Semaphore_MP_Packet;
58
59/*
60 *  _Semaphore_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 _Semaphore_MP_Send_process_packet (
69  Semaphore_MP_Remote_operations operation,
70  Objects_Id                     semaphore_id,
71  rtems_name                     name,
72  Objects_Id                     proxy_id
73);
74
75/*
76 *  _Semaphore_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 _Semaphore_MP_Send_request_packet (
85  Semaphore_MP_Remote_operations operation,
86  Objects_Id                     semaphore_id,
87  rtems_option                option_set,
88  rtems_interval              timeout
89);
90
91/*
92 *  _Semaphore_MP_Send_response_packet
93 *
94 *  DESCRIPTION:
95 *
96 *  This routine performs a remote procedure call so that a
97 *  directive can be performed on another node.
98 */
99
100void _Semaphore_MP_Send_response_packet (
101  Semaphore_MP_Remote_operations  operation,
102  Objects_Id                      semaphore_id,
103  Thread_Control                 *the_thread
104);
105
106/*
107 *
108 *  _Semaphore_MP_Process_packet
109 *
110 *  DESCRIPTION:
111 *
112 *  This routine performs the actions specific to this package for
113 *  the request from another node.
114 */
115
116void _Semaphore_MP_Process_packet (
117  rtems_packet_prefix *the_packet_prefix
118);
119
120/*
121 *  _Semaphore_MP_Send_object_was_deleted
122 *
123 *  DESCRIPTION:
124 *
125 *  This routine is invoked indirectly by the thread queue
126 *  when a proxy has been removed from the thread queue and
127 *  the remote node must be informed of this.
128 */
129
130void _Semaphore_MP_Send_object_was_deleted (
131  Thread_Control *the_proxy
132);
133
134/*
135 *  _Semaphore_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 _Semaphore_MP_Send_extract_proxy (
145  Thread_Control *the_thread
146);
147
148/*
149 *  _Semaphore_MP_Get_packet
150 *
151 *  DESCRIPTION:
152 *
153 *  This function is used to obtain a semaphore mp packet.
154 */
155
156Semaphore_MP_Packet *_Semaphore_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.