source: rtems/c/src/exec/score/macros/userext.inl @ 94b3ec59

4.104.114.84.95
Last change on this file since 94b3ec59 was 94b3ec59, checked in by Joel Sherrill <joel.sherrill@…>, on 02/13/96 at 22:14:48

changed post task extension from user set to api set and added flag
in each thread which must be set when the post switch extension is to be run.

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*  userext.inl
2 *
3 *  This file contains the macro implementation of the inlined routines
4 *  from the User Extension Handler
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 __USER_EXTENSIONS_inl
18#define __USER_EXTENSIONS_inl
19
20/*PAGE
21 *
22 *  _User_extensions_Handler_initialization
23 *
24 */
25
26#define _User_extensions_Handler_initialization( _initial_extensions ) \
27  { \
28    _Chain_Initialize_empty( &_User_extensions_List ); \
29    \
30    if ( (_initial_extensions) ) { \
31      _User_extensions_Initial.Callouts = *(_initial_extensions); \
32      _Chain_Append( \
33        &_User_extensions_List, &_User_extensions_Initial.Node ); \
34    } \
35  }
36
37/*PAGE
38 *
39 *  _User_extensions_Add_set
40 */
41
42#define _User_extensions_Add_set( _the_extension, _extension_table ) \
43  do { \
44    (_the_extension)->Callouts = *(_extension_table); \
45    \
46    _Chain_Append( &_User_extensions_List, &(_the_extension)->Node ); \
47  } while ( 0 )
48
49/*PAGE
50 *
51 *  _User_extensions_Add_API_set
52 */
53 
54#define _User_extensions_Add_API_set( _the_extension ) \
55  _Chain_Prepend( &_User_extensions_List, &(_the_extension)->Node )
56 
57
58/*PAGE
59 *
60 *  _User_extensions_Remove_set
61 */
62
63#define _User_extensions_Remove_set( _the_extension ) \
64  _Chain_Extract( &(_the_extension)->Node )
65
66/*PAGE
67 *
68 *  _User_extensions_Run_list_forward
69 *
70 *  NOTE:  No parentheses around macro names here to avoid
71 *         messing up the name and function call expansion.
72 */
73
74#define _User_extensions_Run_list_forward( _name, _arguments ) \
75  do { \
76    Chain_Node              *the_node; \
77    User_extensions_Control *the_extension; \
78    \
79    for ( the_node = _User_extensions_List.first ; \
80          !_Chain_Is_tail( &_User_extensions_List, the_node ) ; \
81          the_node = the_node->next ) { \
82      the_extension = (User_extensions_Control *) the_node; \
83      \
84      if ( the_extension->Callouts.## _name != NULL ) \
85        (*the_extension->Callouts.## _name) _arguments; \
86      \
87    } \
88    \
89  } while ( 0 )
90
91/*PAGE
92 *
93 *  _User_extensions_Run_list_backward
94 *
95 *  NOTE:  No parentheses around macro names here to avoid
96 *         messing up the name and function call expansion.
97 */
98
99#define _User_extensions_Run_list_backward( _name, _arguments ) \
100  do { \
101    Chain_Node              *the_node; \
102    User_extensions_Control *the_extension; \
103    \
104    for ( the_node = _User_extensions_List.last ; \
105          !_Chain_Is_head( &_User_extensions_List, the_node ) ; \
106          the_node = the_node->previous ) { \
107      the_extension = (User_extensions_Control *) the_node; \
108      \
109      if ( the_extension->Callouts.## _name != NULL ) \
110        (*the_extension->Callouts.## _name) _arguments; \
111      \
112    } \
113    \
114  } while ( 0 )
115
116/*PAGE
117 *
118 *  _User_extensions_Thread_switch
119 *
120 */
121
122#define _User_extensions_Thread_switch( _executing, _heir ) \
123  _User_extensions_Run_list_forward(thread_switch, (_executing, _heir) )
124
125#endif
126/* end of include file */
Note: See TracBrowser for help on using the repository browser.