source: rtems/cpukit/score/include/rtems/score/threadmp.h @ 3a5dbdc

4.104.114.84.95
Last change on this file since 3a5dbdc was 3a5dbdc, checked in by Joel Sherrill <joel.sherrill@…>, on Jul 31, 1995 at 10:22:38 PM

Switched to events for mp receive server and eliminated the special
blocking mechanism for it.

  • Property mode set to 100644
File size: 2.4 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 *  The following is used to determine when the multiprocessing receive
94 *  thread is executing so that a proxy can be allocated instead of
95 *  blocking the multiprocessing receive thread.
96 */
97
98EXTERN Thread_Control *_Thread_MP_Receive;
99
100/*
101 * The following chains are used to manage proxies.
102 */
103
104EXTERN Chain_Control _Thread_MP_Active_proxies;
105EXTERN Chain_Control _Thread_MP_Inactive_proxies;
106
107#include <rtems/threadmp.inl>
108
109#ifdef __cplusplus
110}
111#endif
112
113#endif
114/* end of include file */
Note: See TracBrowser for help on using the repository browser.