source: rtems/cpukit/rtems/include/rtems/rtems/taskmp.h @ 092f142a

4.104.114.84.95
Last change on this file since 092f142a was 092f142a, checked in by Ralf Corsepius <ralf.corsepius@…>, on 01/28/05 at 05:00:21

New header guard.

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