diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-04-15 00:02:10 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-04-15 00:02:10 +0000 |
commit | 0451b44f3600f2e05859b931324b823b62a8251d (patch) | |
tree | 5a518a8684ff8a03493306def19baa477aa2846e /cpukit/score | |
parent | changed version to ralf-980414 (diff) | |
download | rtems-0451b44f3600f2e05859b931324b823b62a8251d.tar.bz2 |
Per suggestion from Eric Norum, went from one initial extension set
to multiple. This lets the stack check extension be installed
at system initialization time and avoids the BSP having to
even know about its existence.
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/include/rtems/score/userext.h | 7 | ||||
-rw-r--r-- | cpukit/score/inline/rtems/score/userext.inl | 15 |
2 files changed, 13 insertions, 9 deletions
diff --git a/cpukit/score/include/rtems/score/userext.h b/cpukit/score/include/rtems/score/userext.h index b97923d88b..29b0e9564e 100644 --- a/cpukit/score/include/rtems/score/userext.h +++ b/cpukit/score/include/rtems/score/userext.h @@ -101,13 +101,6 @@ typedef struct { } User_extensions_Control; /* - * The following contains the static extension set which may be - * configured by the application. - */ - -SCORE_EXTERN User_extensions_Control _User_extensions_Initial; - -/* * The following is used to manage the list of active extensions. */ diff --git a/cpukit/score/inline/rtems/score/userext.inl b/cpukit/score/inline/rtems/score/userext.inl index 3ddb8459b8..29f7975aaa 100644 --- a/cpukit/score/inline/rtems/score/userext.inl +++ b/cpukit/score/inline/rtems/score/userext.inl @@ -17,6 +17,8 @@ #ifndef __USER_EXTENSIONS_inl #define __USER_EXTENSIONS_inl +#include <rtems/score/wkspace.h> + /*PAGE * * _User_extensions_Handler_initialization @@ -27,14 +29,23 @@ */ RTEMS_INLINE_ROUTINE void _User_extensions_Handler_initialization ( + unsigned32 number_of_extensions, User_extensions_Table *initial_extensions ) { + User_extensions_Control *extension; + unsigned32 i; + _Chain_Initialize_empty( &_User_extensions_List ); if ( initial_extensions ) { - _User_extensions_Initial.Callouts = *initial_extensions; - _Chain_Append( &_User_extensions_List, &_User_extensions_Initial.Node ); + for (i=0 ; i<number_of_extensions ; i++ ) { + extension = + _Workspace_Allocate_or_fatal_error( sizeof(User_extensions_Control) ); + + extension->Callouts = initial_extensions[i]; + _Chain_Append( &_User_extensions_List, &extension->Node ); + } } } |