source: rtems/cpukit/posix/include/rtems/posix/semaphoremp.h @ 1d9a2fc

4.104.114.84.95
Last change on this file since 1d9a2fc was 1d9a2fc, checked in by Joel Sherrill <joel.sherrill@…>, on 11/29/99 at 15:45:11

Patch rtems-rc-19991123-rc-0.diff from Ralf Corsepius <corsepiu@…>
which (among other things) converted the mptests to automake.

SUB_DIRS was used instead of SUBDIRS in some Makefile.ins
(apparently a leftover from moving the start* directories)

Addtional major bugs:

  • psxtests/include was empty (incomplete psxtests changes).
  • bogus handling of *.scn in itrontests (screens/sptests vs. screens/itrontests installation dirs)

In addition I have added a few more changes (I couldn't resist)

  • automake support for itrontests
  • OPERATION_COUNT support in tmitrontests/
  • automake support for tmitrontests
  • automake suppport for mptests
  • Some (minor) corrections to several configure.in/Makefile.ams

=> c/src/tests/ is completly under automake control, now.
=> we could start to sort out the structural issues with c/src/tests

(tests/support, stubdr, tools, get "make dist" working)

  • Property mode set to 100644
File size: 3.9 KB
RevLine 
[5e9b32b]1/*  semaphoremp.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the Multiprocessing Support in the POSIX Semaphore Manager.
5 *
[08311cc3]6 *  COPYRIGHT (c) 1989-1999.
[5e9b32b]7 *  On-Line Applications Research Corporation (OAR).
8 *
[98e4ebf5]9 *  The license and distribution terms for this file may be
10 *  found in the file LICENSE in this distribution or at
[03f2154e]11 *  http://www.OARcorp.com/rtems/license.html.
[5e9b32b]12 *
13 *  $Id$
14 */
15
16#ifndef __RTEMS_POSIX_SEMAPHORE_MP_h
17#define __RTEMS_POSIX_SEMAPHORE_MP_h
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23#include <rtems/score/mppkt.h>
24#include <rtems/score/object.h>
25#include <rtems/score/thread.h>
26#include <rtems/score/watchdog.h>
27
28/*
29 *  The following enumerated type defines the list of
30 *  remote semaphore operations.
31 */
32
33typedef enum {
34  POSIX_SEMAPHORE_MP_ANNOUNCE_CREATE  =  0,
35  POSIX_SEMAPHORE_MP_ANNOUNCE_DELETE  =  1,
36  POSIX_SEMAPHORE_MP_EXTRACT_PROXY    =  2,
37  POSIX_SEMAPHORE_MP_OBTAIN_REQUEST   =  3,
38  POSIX_SEMAPHORE_MP_OBTAIN_RESPONSE  =  4,
39  POSIX_SEMAPHORE_MP_RELEASE_REQUEST  =  5,
40  POSIX_SEMAPHORE_MP_RELEASE_RESPONSE =  6,
41}   POSIX_Semaphore_MP_Remote_operations;
42
43/*
44 *  The following data structure defines the packet used to perform
45 *  remote semaphore operations.
46 */
47
48typedef struct {
49  MP_packet_Prefix                      Prefix;
50  POSIX_Semaphore_MP_Remote_operations  operation;
51  Objects_Name                          name;
52  boolean                               wait;  /* XXX options */
53  Objects_Id                            proxy_id;
54}   POSIX_Semaphore_MP_Packet;
55
56/*
57 *  _POSIX_Semaphore_MP_Send_process_packet
58 *
59 *  DESCRIPTION:
60 *
61 *  This routine performs a remote procedure call so that a
62 *  process operation can be performed on another node.
63 */
64
[1d9a2fc]65void _POSIX_Semaphore_MP_Send_process_packet(
[5e9b32b]66  POSIX_Semaphore_MP_Remote_operations  operation,
67  Objects_Id                            semaphore_id,
68  Objects_Name                          name,
69  Objects_Id                            proxy_id
70);
71
72/*
73 *  _POSIX_Semaphore_MP_Send_request_packet
74 *
75 *  DESCRIPTION:
76 *
77 *  This routine performs a remote procedure call so that a
78 *  directive operation can be initiated on another node.
79 */
80
[1d9a2fc]81int _POSIX_Semaphore_MP_Send_request_packet(
[5e9b32b]82  POSIX_Semaphore_MP_Remote_operations  operation,
83  Objects_Id                            semaphore_id,
84  boolean                               wait,  /* XXX options */
85  Watchdog_Interval                     timeout
86);
87
88/*
89 *  _POSIX_Semaphore_MP_Send_response_packet
90 *
91 *  DESCRIPTION:
92 *
93 *  This routine performs a remote procedure call so that a
94 *  directive can be performed on another node.
95 */
96
[1d9a2fc]97void _POSIX_Semaphore_MP_Send_response_packet(
[5e9b32b]98  POSIX_Semaphore_MP_Remote_operations  operation,
99  Objects_Id                        semaphore_id,
100  Thread_Control                   *the_thread
101);
102
103/*
104 *
105 *  _POSIX_Semaphore_MP_Process_packet
106 *
107 *  DESCRIPTION:
108 *
109 *  This routine performs the actions specific to this package for
110 *  the request from another node.
111 */
112
[1d9a2fc]113void _POSIX_Semaphore_MP_Process_packet(
[5e9b32b]114  MP_packet_Prefix *the_packet_prefix
115);
116
117/*
118 *  _POSIX_Semaphore_MP_Send_object_was_deleted
119 *
120 *  DESCRIPTION:
121 *
122 *  This routine is invoked indirectly by the thread queue
123 *  when a proxy has been removed from the thread queue and
124 *  the remote node must be informed of this.
125 */
126
[1d9a2fc]127void _POSIX_Semaphore_MP_Send_object_was_deleted(
[5e9b32b]128  Thread_Control *the_proxy
129);
130
131/*
132 *  _POSIX_Semaphore_MP_Send_extract_proxy
133 *
134 *  DESCRIPTION:
135 *
136 *  This routine is invoked when a task is deleted and it
137 *  has a proxy which must be removed from a thread queue and
138 *  the remote node must be informed of this.
139 */
140
[1d9a2fc]141void _POSIX_Semaphore_MP_Send_extract_proxy(
[5e9b32b]142  Thread_Control *the_thread
143);
144
145/*
146 *  _POSIX_Semaphore_MP_Get_packet
147 *
148 *  DESCRIPTION:
149 *
150 *  This function is used to obtain a semaphore mp packet.
151 */
152
[1d9a2fc]153POSIX_Semaphore_MP_Packet *_POSIX_Semaphore_MP_Get_packet( void );
[5e9b32b]154
155#ifdef __cplusplus
156}
157#endif
158
159#endif
160/* end of file */
Note: See TracBrowser for help on using the repository browser.