source: rtems/cpukit/rtems/include/rtems/rtems/semmp.h @ f9293df

4.104.114.95
Last change on this file since f9293df was f9293df, checked in by Joel Sherrill <joel.sherrill@…>, on 04/18/08 at 20:08:08

2008-04-18 Joel Sherrill <joel.sherrill@…>

  • rtems/Doxyfile, rtems/include/rtems/rtems/asr.h, rtems/include/rtems/rtems/attr.h, rtems/include/rtems/rtems/barrier.h, rtems/include/rtems/rtems/barriermp.h, rtems/include/rtems/rtems/cache.h, rtems/include/rtems/rtems/config.h, rtems/include/rtems/rtems/dpmem.h, rtems/include/rtems/rtems/event.h, rtems/include/rtems/rtems/eventmp.h, rtems/include/rtems/rtems/eventset.h, rtems/include/rtems/rtems/intr.h, rtems/include/rtems/rtems/message.h, rtems/include/rtems/rtems/modes.h, rtems/include/rtems/rtems/mp.h, rtems/include/rtems/rtems/msgmp.h, rtems/include/rtems/rtems/options.h, rtems/include/rtems/rtems/part.h, rtems/include/rtems/rtems/partmp.h, rtems/include/rtems/rtems/ratemon.h, rtems/include/rtems/rtems/region.h, rtems/include/rtems/rtems/regionmp.h, rtems/include/rtems/rtems/rtemsapi.h, rtems/include/rtems/rtems/sem.h, rtems/include/rtems/rtems/semmp.h, rtems/include/rtems/rtems/signal.h, rtems/include/rtems/rtems/signalmp.h, rtems/include/rtems/rtems/status.h, rtems/include/rtems/rtems/support.h, rtems/include/rtems/rtems/taskmp.h, rtems/include/rtems/rtems/tasks.h, rtems/include/rtems/rtems/timer.h, rtems/include/rtems/rtems/types.h, rtems/inline/rtems/rtems/asr.inl, rtems/inline/rtems/rtems/attr.inl, rtems/inline/rtems/rtems/barrier.inl, rtems/inline/rtems/rtems/dpmem.inl, rtems/inline/rtems/rtems/event.inl, rtems/inline/rtems/rtems/message.inl, rtems/inline/rtems/rtems/modes.inl, rtems/inline/rtems/rtems/options.inl, rtems/inline/rtems/rtems/part.inl, rtems/inline/rtems/rtems/ratemon.inl, rtems/inline/rtems/rtems/region.inl, rtems/inline/rtems/rtems/sem.inl, rtems/inline/rtems/rtems/status.inl, rtems/inline/rtems/rtems/support.inl, rtems/inline/rtems/rtems/timer.inl: More Doxygen improvements.
  • Property mode set to 100644
File size: 4.4 KB
Line 
1/**
2 * @file rtems/rtems/semmp.h
3 *
4 *  This include file contains all the constants and structures associated
5 *  with the Multiprocessing Support in the Semaphore Manager.
6 */
7
8/*  COPYRIGHT (c) 1989-2008.
9 *  On-Line Applications Research Corporation (OAR).
10 *
11 *  The license and distribution terms for this file may be
12 *  found in the file LICENSE in this distribution or at
13 *  http://www.rtems.com/license/LICENSE.
14 *
15 *  $Id$
16 */
17
18#ifndef _RTEMS_RTEMS_SEMMP_H
19#define _RTEMS_RTEMS_SEMMP_H
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#include <rtems/score/mppkt.h>
26#include <rtems/score/object.h>
27#include <rtems/rtems/options.h>
28#include <rtems/rtems/sem.h>
29#include <rtems/score/thread.h>
30#include <rtems/score/watchdog.h>
31
32/**
33 *  @defgroup ClassicSEM Classic API Semaphore MP Support
34 *
35 *  This encapsulates functionality which XXX
36 */
37/**@{*/
38
39/**
40 *  The following enumerated type defines the list of
41 *  remote semaphore operations.
42 */
43typedef enum {
44  SEMAPHORE_MP_ANNOUNCE_CREATE  =  0,
45  SEMAPHORE_MP_ANNOUNCE_DELETE  =  1,
46  SEMAPHORE_MP_EXTRACT_PROXY    =  2,
47  SEMAPHORE_MP_OBTAIN_REQUEST   =  3,
48  SEMAPHORE_MP_OBTAIN_RESPONSE  =  4,
49  SEMAPHORE_MP_RELEASE_REQUEST  =  5,
50  SEMAPHORE_MP_RELEASE_RESPONSE =  6
51}   Semaphore_MP_Remote_operations;
52
53/**
54 *  The following data structure defines the packet used to perform
55 *  remote semaphore operations.
56 */
57typedef struct {
58  rtems_packet_prefix             Prefix;
59  Semaphore_MP_Remote_operations  operation;
60  rtems_name                      name;
61  rtems_option                    option_set;
62  Objects_Id                      proxy_id;
63}   Semaphore_MP_Packet;
64
65/**
66 *  @brief Semaphore_MP_Send_process_packet
67 *
68 *  This routine performs a remote procedure call so that a
69 *  process operation can be performed on another node.
70 */
71void _Semaphore_MP_Send_process_packet (
72  Semaphore_MP_Remote_operations operation,
73  Objects_Id                     semaphore_id,
74  rtems_name                     name,
75  Objects_Id                     proxy_id
76);
77
78/**
79 *  @brief Semaphore_MP_Send_request_packet
80 *
81 *  This routine performs a remote procedure call so that a
82 *  directive operation can be initiated on another node.
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 *  @brief Semaphore_MP_Send_response_packet
93 *
94 *  This routine performs a remote procedure call so that a
95 *  directive can be performed on another node.
96 */
97void _Semaphore_MP_Send_response_packet (
98  Semaphore_MP_Remote_operations  operation,
99  Objects_Id                      semaphore_id,
100  Thread_Control                 *the_thread
101);
102
103/**
104 *  @brief Semaphore_MP_Process_packet
105 *
106 *  This routine performs the actions specific to this package for
107 *  the request from another node.
108 */
109void _Semaphore_MP_Process_packet (
110  rtems_packet_prefix *the_packet_prefix
111);
112
113/**
114 *  @brief Semaphore_MP_Send_object_was_deleted
115 *
116 *  This routine is invoked indirectly by the thread queue
117 *  when a proxy has been removed from the thread queue and
118 *  the remote node must be informed of this.
119 */
120void _Semaphore_MP_Send_object_was_deleted (
121  Thread_Control *the_proxy
122);
123
124/**
125 *  @brief Semaphore_MP_Send_extract_proxy
126 *
127 *  This routine is invoked when a task is deleted and it
128 *  has a proxy which must be removed from a thread queue and
129 *  the remote node must be informed of this.
130 */
131void _Semaphore_MP_Send_extract_proxy (
132  void           *argument
133);
134
135/**
136 *  @brief Semaphore_MP_Get_packet
137 *
138 *  This function is used to obtain a semaphore mp packet.
139 */
140Semaphore_MP_Packet *_Semaphore_MP_Get_packet ( void );
141
142/**
143 * @brief _Semaphore_Core_mutex_mp_support
144 *
145 *  This function processes the global actions necessary for remote
146 *  accesses to a global semaphore based on a core mutex.  This function
147 *  is called by the core.
148 */
149void  _Semaphore_Core_mutex_mp_support (
150  Thread_Control *the_thread,
151  rtems_id        id
152);
153
154/**
155 *  @brief Semaphore_Core_mp_support
156 *
157 *  This function processes the global actions necessary for remote
158 *  accesses to a global semaphore based on a core semaphore.  This function
159 *  is called by the core.
160 */
161void  _Semaphore_Core_semaphore_mp_support (
162  Thread_Control *the_thread,
163  rtems_id        id
164);
165
166#ifdef __cplusplus
167}
168#endif
169
170/**@}*/
171
172#endif
173/* end of file */
Note: See TracBrowser for help on using the repository browser.