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

4.104.114.84.95
Last change on this file since eb5a7e07 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/*  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/score/mppkt.h>
25#include <rtems/score/object.h>
26#include <rtems/rtems/options.h>
27#include <rtems/rtems/sem.h>
28#include <rtems/score/thread.h>
29#include <rtems/score/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.