source: rtems/c/src/exec/score/include/rtems/score/threadmp.h @ ac7d5ef0

4.104.114.84.95
Last change on this file since ac7d5ef0 was ac7d5ef0, checked in by Joel Sherrill <joel.sherrill@…>, on May 11, 1995 at 5:39:37 PM

Initial revision

  • Property mode set to 100644
File size: 2.7 KB
Line 
1/*  threadmp.h
2 *
3 *  This include file contains the specification for all routines
4 *  and data specific to the multiprocessing portion of the thread package.
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_THREAD_MP_h
18#define __RTEMS_THREAD_MP_h
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24/*
25 *  _Thread_MP_Handler_initialization
26 *
27 *  DESCRIPTION:
28 *
29 *  This package is the specification for the Thread Handler's
30 *  multiprocessing specific support routines.
31 */
32
33void _Thread_MP_Handler_initialization (
34  unsigned32 maximum_proxies
35);
36
37/*
38 *  _Thread_MP_Is_receive
39 *
40 *  DESCRIPTION:
41 *
42 *  This function returns true if the thread in question is the
43 *  multiprocessing receive thread.
44 */
45
46STATIC INLINE boolean _Thread_MP_Is_receive (
47  Thread_Control *the_thread
48);
49
50/*
51 *  _Thread_MP_Allocate_proxy
52 *
53 *  DESCRIPTION:
54 *
55 *  This  allocates a proxy control block from
56 *  the inactive chain of free proxy control blocks.
57 *
58 *  NOTE: This function returns a thread control pointer
59 *        because proxies are substitutes for remote threads.
60 */
61
62Thread_Control *_Thread_MP_Allocate_proxy (
63  States_Control the_state
64);
65
66/*
67 *  _Thread_MP_Free_proxy
68 *
69 *  DESCRIPTION:
70 *
71 *  This routine frees a proxy control block to the
72 *  inactive chain of free proxy control blocks.
73 */
74
75STATIC INLINE void _Thread_MP_Free_proxy (
76  Thread_Control *the_thread
77);
78
79/*
80 *  _Thread_MP_Find_proxy
81 *
82 *  DESCRIPTION:
83 *
84 *  This function removes the proxy control block for the specified
85 *  id from the active chain of proxy control blocks.
86 */
87
88Thread_Control *_Thread_MP_Find_proxy (
89  Objects_Id the_id
90);
91
92/*
93 *  _Thread_MP_Block
94 *
95 *  DESCRIPTION:
96 *
97 *  This routine blocks the MP Receive server thread.
98 */
99
100void _Thread_MP_Block( void );
101
102/*
103 *  _Thread_MP_Ready
104 *
105 *  DESCRIPTION:
106 *
107 *  This routine readies the MP Receive server thread.
108 */
109
110void _Thread_MP_Ready( void );
111
112/*
113 *  The following is used to determine when the multiprocessing receive
114 *  thread is executing so that a proxy can be allocated instead of
115 *  blocking the multiprocessing receive thread.
116 */
117
118EXTERN Thread_Control *_Thread_MP_Receive;
119
120/*
121 * The following chains are used to manage proxies.
122 */
123
124EXTERN Chain_Control _Thread_MP_Active_proxies;
125EXTERN Chain_Control _Thread_MP_Inactive_proxies;
126
127#include <rtems/threadmp.inl>
128
129#ifdef __cplusplus
130}
131#endif
132
133#endif
134/* end of include file */
Note: See TracBrowser for help on using the repository browser.