From 7af35da5ff4331086e60d66c8bb8466cd6925a40 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 21 Sep 1995 20:55:07 +0000 Subject: More file movement required api extension to be added to score --- cpukit/rtems/src/tasks.c | 10 ++-- cpukit/sapi/src/exinit.c | 3 ++ cpukit/score/include/rtems/score/apiext.h | 86 +++++++++++++++++++++++++++++++ cpukit/score/src/apiext.c | 84 ++++++++++++++++++++++++++++++ 4 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 cpukit/score/include/rtems/score/apiext.h create mode 100644 cpukit/score/src/apiext.c (limited to 'cpukit') diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c index 1a221331cb..bed9e8112d 100644 --- a/cpukit/rtems/src/tasks.c +++ b/cpukit/rtems/src/tasks.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include /*PAGE @@ -132,13 +132,13 @@ User_extensions_routine _RTEMS_tasks_Switch_extension( } -Internal_threads_Extensions_control _RTEMS_tasks_Internal_thread_extensions = { +API_extensions_Control _RTEMS_tasks_API_extensions = { { NULL, NULL }, NULL, /* predriver */ _RTEMS_tasks_Initialize_user_tasks /* postdriver */ }; -User_extensions_Control _RTEMS_tasks_API_extensions = { +User_extensions_Control _RTEMS_tasks_User_extensions = { { NULL, NULL }, { _RTEMS_tasks_Create_extension, /* create */ _RTEMS_tasks_Start_extension, /* start */ @@ -192,9 +192,9 @@ void _RTEMS_tasks_Manager_initialization( * Add all the extensions for this API */ - _User_extensions_Add_API_set( &_RTEMS_tasks_API_extensions ); + _User_extensions_Add_API_set( &_RTEMS_tasks_User_extensions ); - _Internal_threads_Add_extension( &_RTEMS_tasks_Internal_thread_extensions ); + _API_extensions_Add( &_RTEMS_tasks_API_extensions ); /* * Register the MP Process Packet routine. diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c index 4c9cb2e785..bde925b7a3 100644 --- a/cpukit/sapi/src/exinit.c +++ b/cpukit/sapi/src/exinit.c @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -144,6 +145,8 @@ rtems_interrupt_level rtems_initialize_executive_early( _Debug_Manager_initialization(); + _API_extensions_Initialization(); + _Thread_Dispatch_initialization(); _User_extensions_Handler_initialization( diff --git a/cpukit/score/include/rtems/score/apiext.h b/cpukit/score/include/rtems/score/apiext.h new file mode 100644 index 0000000000..07ac4b4a93 --- /dev/null +++ b/cpukit/score/include/rtems/score/apiext.h @@ -0,0 +1,86 @@ +/* apiext.h + * + * XXX + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + + +#ifndef __API_EXTENSIONS_h +#define __API_EXTENSIONS_h + +#include + +/* + * The control structure which defines the points at which an API + * can add an extension to the system initialization thread. + */ + +typedef void (*API_extensions_Predriver_hook)(void); +typedef void (*API_extensions_Postdriver_hook)(void); + +typedef struct { + Chain_Node Node; + API_extensions_Predriver_hook predriver_hook; + API_extensions_Postdriver_hook postdriver_hook; +} API_extensions_Control; + +/* + * This is the list of API extensions to the system initialization. + */ + +EXTERN Chain_Control _API_extensions_List; + +/* + * _API_extensions_Initialization + * + * DESCRIPTION: + * + * This routine initializes the API extension handler. + * + */ + +void _API_extensions_Initialization( void ); + +/* + * _API_extensions_Add + * + * DESCRIPTION: + * + * XXX + */ + +void _API_extensions_Add( + API_extensions_Control *the_extension +); + +/* + * _API_extensions_Run_predriver + * + * DESCRIPTION: + * + * XXX + */ + +void _API_extensions_Run_predriver( void ); + +/* + * _API_extensions_Run_postdriver + * + * DESCRIPTION: + * + * XXX + */ + +void _API_extensions_Run_postdriver( void ); + +#endif +/* end of include file */ diff --git a/cpukit/score/src/apiext.c b/cpukit/score/src/apiext.c new file mode 100644 index 0000000000..60de0540f9 --- /dev/null +++ b/cpukit/score/src/apiext.c @@ -0,0 +1,84 @@ +/* apiext.c + * + * XXX + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + + +#include +#include + +/*PAGE + * + * _API_extensions_Initialization + */ + +void _API_extensions_Initialization( void ) +{ + _Chain_Initialize_empty( &_API_extensions_List ); +} + +/*PAGE + * + * _API_extensions_Add + */ + +void _API_extensions_Add( + API_extensions_Control *the_extension +) +{ + _Chain_Append( &_API_extensions_List, &the_extension->Node ); +} + +/*PAGE + * + * _API_extensions_Run_predriver + */ + +void _API_extensions_Run_predriver( void ) +{ + Chain_Node *the_node; + API_extensions_Control *the_extension; + + for ( the_node = _API_extensions_List.first ; + !_Chain_Is_tail( &_API_extensions_List, the_node ) ; + the_node = the_node->next ) { + + the_extension = (API_extensions_Control *) the_node; + + if ( the_extension->predriver_hook ) + (*the_extension->predriver_hook)(); + } +} + +/*PAGE + * + * _API_extensions_Run_postdriver + */ + +void _API_extensions_Run_postdriver( void ) +{ + Chain_Node *the_node; + API_extensions_Control *the_extension; + + for ( the_node = _API_extensions_List.first ; + !_Chain_Is_tail( &_API_extensions_List, the_node ) ; + the_node = the_node->next ) { + + the_extension = (API_extensions_Control *) the_node; + + if ( the_extension->postdriver_hook ) + (*the_extension->postdriver_hook)(); + } +} + +/* end of file */ -- cgit v1.2.3