source: rtems/c/src/exec/score/inline/rtems/score/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: 2.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
26STATIC INLINE void _User_extensions_Handler_initialization (
27    User_extensions_Table  *initial_extensions
28)
29{
30  _Chain_Initialize_empty( &_User_extensions_List );
31
32  if ( initial_extensions ) {
33    _User_extensions_Initial.Callouts = *initial_extensions;
34    _Chain_Append( &_User_extensions_List, &_User_extensions_Initial.Node );
35  }
36}
37
38/*PAGE
39 *
40 *  _User_extensions_Add_set
41 */
42
43STATIC INLINE void _User_extensions_Add_set (
44  User_extensions_Control *the_extension,
45  User_extensions_Table   *extension_table
46)
47{
48  the_extension->Callouts = *extension_table;
49
50  _Chain_Append( &_User_extensions_List, &the_extension->Node );
51}
52
53/*PAGE
54 *
55 *  _User_extensions_Add_API_set
56 */
57 
58STATIC INLINE void _User_extensions_Add_API_set (
59  User_extensions_Control *the_extension
60)
61{
62  _Chain_Prepend( &_User_extensions_List, &the_extension->Node );
63}
64 
65/*PAGE
66 *
67 *  _User_extensions_Remove_set
68 */
69
70STATIC INLINE void _User_extensions_Remove_set (
71  User_extensions_Control  *the_extension
72)
73{
74  _Chain_Extract( &the_extension->Node );
75}
76
77/*PAGE
78 *
79 *  _User_extensions_Thread_switch
80 *
81 */
82
83STATIC INLINE void _User_extensions_Thread_switch (
84  Thread_Control *executing,
85  Thread_Control *heir
86)
87{
88  Chain_Node              *the_node;
89  User_extensions_Control *the_extension;
90
91  for ( the_node = _User_extensions_List.first ;
92        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;
93        the_node = the_node->next ) {
94
95    the_extension = (User_extensions_Control *) the_node;
96
97    if ( the_extension->Callouts.thread_switch != NULL )
98      (*the_extension->Callouts.thread_switch)( executing, heir );
99  }
100}
101
102#endif
103/* end of include file */
Note: See TracBrowser for help on using the repository browser.