source: rtems/cpukit/rtems/include/rtems/rtems/taskmp.h @ da6375b

4.104.114.84.95
Last change on this file since da6375b was da6375b, checked in by Joel Sherrill <joel.sherrill@…>, on 08/22/95 at 16:03:46

fix broken RCS Ids -- $ accidentally lost merging changes earlier

  • Property mode set to 100644
File size: 4.1 KB
Line 
1/*  taskmp.h
2 *
3 *  This include file contains all the constants and structures associated
4 *  with the multiprocessing support in the task 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_RTEMS_TASKS_MP_h
18#define __RTEMS_RTEMS_TASKS_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/priority.h>
28#include <rtems/tasks.h>
29#include <rtems/thread.h>
30
31/*
32 *  The following enumerated type defines the list of
33 *  remote task operations.
34 */
35
36typedef enum {
37  RTEMS_TASKS_MP_ANNOUNCE_CREATE       =  0,
38  RTEMS_TASKS_MP_ANNOUNCE_DELETE       =  1,
39  RTEMS_TASKS_MP_SUSPEND_REQUEST       =  2,
40  RTEMS_TASKS_MP_SUSPEND_RESPONSE      =  3,
41  RTEMS_TASKS_MP_RESUME_REQUEST        =  4,
42  RTEMS_TASKS_MP_RESUME_RESPONSE       =  5,
43  RTEMS_TASKS_MP_SET_PRIORITY_REQUEST  =  6,
44  RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE =  7,
45  RTEMS_TASKS_MP_GET_NOTE_REQUEST      =  8,
46  RTEMS_TASKS_MP_GET_NOTE_RESPONSE     =  9,
47  RTEMS_TASKS_MP_SET_NOTE_REQUEST      = 10,
48  RTEMS_TASKS_MP_SET_NOTE_RESPONSE     = 11
49}   RTEMS_tasks_MP_Remote_operations;
50
51/*
52 *  The following data structure defines the packet used to perform
53 *  remote task operations.
54 */
55
56typedef struct {
57  rtems_packet_prefix                 Prefix;
58  RTEMS_tasks_MP_Remote_operations operation;
59  Objects_Name                     name;
60  rtems_task_priority                 the_priority;
61  unsigned32                       notepad;
62  unsigned32                       note;
63}   RTEMS_tasks_MP_Packet;
64
65/*
66 *  _RTEMS_tasks_MP_Send_process_packet
67 *
68 *  DESCRIPTION:
69 *
70 *  This routine performs a remote procedure call so that a
71 *  process operation can be performed on another node.
72 */
73
74void _RTEMS_tasks_MP_Send_process_packet (
75  RTEMS_tasks_MP_Remote_operations operation,
76  Objects_Id                       task_id,
77  Objects_Name                     name
78);
79
80/*
81 *  _RTEMS_tasks_MP_Send_request_packet
82 *
83 *  DESCRIPTION:
84 *
85 *  This routine performs a remote procedure call so that a
86 *  directive operation can be initiated on another node.
87 */
88
89rtems_status_code _RTEMS_tasks_MP_Send_request_packet (
90  RTEMS_tasks_MP_Remote_operations operation,
91  Objects_Id                       task_id,
92  rtems_task_priority                 the_priority,
93  unsigned32                       notepad,
94  unsigned32                       note
95);
96
97/*
98 *  _RTEMS_tasks_MP_Send_response_packet
99 *
100 *  DESCRIPTION:
101 *
102 *  This routine performs a remote procedure call so that a
103 *  directive can be performed on another node.
104 */
105
106void _RTEMS_tasks_MP_Send_response_packet (
107  RTEMS_tasks_MP_Remote_operations  operation,
108  Thread_Control                   *the_thread
109);
110
111/*
112 *
113 *  _RTEMS_tasks_MP_Process_packet
114 *
115 *  DESCRIPTION:
116 *
117 *  This routine performs the actions specific to this package for
118 *  the request from another node.
119 */
120
121void _RTEMS_tasks_MP_Process_packet (
122  rtems_packet_prefix *the_packet_prefix
123);
124
125/*
126 *  _RTEMS_tasks_MP_Send_object_was_deleted
127 *
128 *  DESCRIPTION:
129 *
130 *  This routine is invoked indirectly by the thread queue
131 *  when a proxy has been removed from the thread queue and
132 *  the remote node must be informed of this.
133 *
134 *  This routine is not needed by RTEMS_tasks since a task
135 *  cannot be deleted when segments are in use.
136 */
137
138/*
139 *  _RTEMS_tasks_MP_Send_extract_proxy
140 *
141 *  DESCRIPTION:
142 *
143 *  This routine is invoked when a task is deleted and it
144 *  has a proxy which must be removed from a thread queue and
145 *  the remote node must be informed of this.
146 *
147 *  This routine is not needed since there are no objects
148 *  deleted by this manager.
149 *
150 */
151
152/*
153 *  _RTEMS_tasks_MP_Get_packet
154 *
155 *  DESCRIPTION:
156 *
157 *  This function is used to obtain a task mp packet.
158 */
159
160RTEMS_tasks_MP_Packet *_RTEMS_tasks_MP_Get_packet ( void );
161
162#ifdef __cplusplus
163}
164#endif
165
166#endif
167/* end of file */
Note: See TracBrowser for help on using the repository browser.