summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadinitialize.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/src/threadinitialize.c')
-rw-r--r--cpukit/score/src/threadinitialize.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c
index b2e09727cc..7ef9125a46 100644
--- a/cpukit/score/src/threadinitialize.c
+++ b/cpukit/score/src/threadinitialize.c
@@ -2,7 +2,7 @@
* Thread Handler
*
*
- * COPYRIGHT (c) 1989-2006.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -61,6 +61,7 @@ boolean _Thread_Initialize(
void *fp_area;
#endif
void *extensions_area;
+ boolean extension_status;
/*
* Initialize the Ada self pointer
@@ -220,10 +221,15 @@ boolean _Thread_Initialize(
_Objects_Open( information, &the_thread->Object, name );
/*
- * Invoke create extensions
+ * We assume the Allocator Mutex is locked and dispatching is
+ * enabled when we get here. We want to be able to run the
+ * user extensions with dispatching enabled. The Allocator
+ * Mutex provides sufficient protection to let the user extensions
+ * run safely.
*/
+ extension_status = _User_extensions_Thread_create( the_thread );
- if ( !_User_extensions_Thread_create( the_thread ) ) {
+ if ( !extension_status ) {
if ( extensions_area )
(void) _Workspace_Free( extensions_area );