summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-22 13:03:09 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-22 16:35:07 +0100
commit74d22fd1a9633efe12a7a9c6b7662d80c0185f87 (patch)
tree02fe5af136e868f84a71e5b0938a05fd167d90bd
parentscore: Inline _User_extensions_Thread_switch() (diff)
downloadrtems-74d22fd1a9633efe12a7a9c6b7662d80c0185f87.tar.bz2
score: Inline _API_extensions_Run_postswitch()
The _API_extensions_Run_postswitch() function is only used in _Thread_Dispatch(). Avoid superfluous load of _Thread_Executing.
-rw-r--r--cpukit/score/include/rtems/score/apiext.h16
-rw-r--r--cpukit/score/src/apiext.c19
-rw-r--r--cpukit/score/src/threaddispatch.c2
3 files changed, 16 insertions, 21 deletions
diff --git a/cpukit/score/include/rtems/score/apiext.h b/cpukit/score/include/rtems/score/apiext.h
index 514e4bab95..afd828ca38 100644
--- a/cpukit/score/include/rtems/score/apiext.h
+++ b/cpukit/score/include/rtems/score/apiext.h
@@ -130,7 +130,21 @@ void _API_extensions_Run_postdriver( void );
*
* This routine executes all of the post context switch callouts.
*/
-void _API_extensions_Run_postswitch( void );
+static inline void _API_extensions_Run_postswitch( Thread_Control *executing )
+{
+ const Chain_Control *chain = &_API_extensions_List;
+ const Chain_Node *tail = _Chain_Immutable_tail( chain );
+ const Chain_Node *node = _Chain_Immutable_first( chain );
+
+ while ( node != tail ) {
+ const API_extensions_Control *extension =
+ (const API_extensions_Control *) node;
+
+ (*extension->postswitch_hook)( executing );
+
+ node = _Chain_Immutable_next( node );
+ }
+}
/**@}*/
diff --git a/cpukit/score/src/apiext.c b/cpukit/score/src/apiext.c
index 51b94515e3..b2ca87cba2 100644
--- a/cpukit/score/src/apiext.c
+++ b/cpukit/score/src/apiext.c
@@ -84,23 +84,4 @@ void _API_extensions_Run_postdriver( void )
}
}
-/*
- * _API_extensions_Run_postswitch
- */
-
-void _API_extensions_Run_postswitch( void )
-{
- Chain_Node *the_node;
- API_extensions_Control *the_extension;
-
- for ( the_node = _Chain_First( &_API_extensions_List );
- !_Chain_Is_tail( &_API_extensions_List, the_node ) ;
- the_node = the_node->next ) {
-
- the_extension = (API_extensions_Control *) the_node;
-
- (*the_extension->postswitch_hook)( _Thread_Executing );
- }
-}
-
/* end of file */
diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c
index db1f1043f2..f3d67b480e 100644
--- a/cpukit/score/src/threaddispatch.c
+++ b/cpukit/score/src/threaddispatch.c
@@ -211,5 +211,5 @@ post_switch:
_Thread_Unnest_dispatch();
#endif
- _API_extensions_Run_postswitch();
+ _API_extensions_Run_postswitch( executing );
}