diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-05-09 21:41:05 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-05-09 21:41:05 +0000 |
commit | a2a8c5b417ae7ed5d3889ff236c2b1b5fb96f2f9 (patch) | |
tree | c70c14869fb0357a7d340ece9f1bd6d65753758f /cpukit/sapi | |
parent | 2001-05-09 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-a2a8c5b417ae7ed5d3889ff236c2b1b5fb96f2f9.tar.bz2 |
2001-05-09 Joel Sherrill <joel@OARcorp.com>
* src/exinit.c: Slightly rework initialization so there
is a valid thread as _Thread_Executing when the pre_tasking
hook is called. This allows one directives and malloc
to potentially use mutex protection.
Diffstat (limited to '')
-rw-r--r-- | cpukit/sapi/ChangeLog | 7 | ||||
-rw-r--r-- | cpukit/sapi/src/exinit.c | 18 |
2 files changed, 20 insertions, 5 deletions
diff --git a/cpukit/sapi/ChangeLog b/cpukit/sapi/ChangeLog index d31f1841bf..c77a725239 100644 --- a/cpukit/sapi/ChangeLog +++ b/cpukit/sapi/ChangeLog @@ -1,3 +1,10 @@ +2001-05-09 Joel Sherrill <joel@OARcorp.com> + + * src/exinit.c: Slightly rework initialization so there + is a valid thread as _Thread_Executing when the pre_tasking + hook is called. This allows one directives and malloc + to potentially use mutex protection. + 2001-03-29 Joel Sherrill <joel@OARcorp.com> * Per PR126, configuration structures now match docs. diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c index b44f06df64..af921c0510 100644 --- a/cpukit/sapi/src/exinit.c +++ b/cpukit/sapi/src/exinit.c @@ -29,6 +29,9 @@ #include <rtems/score/sysstate.h> #include <rtems/score/apiext.h> +#if 0 +#include <rtems/score/apimutex.h> +#endif #include <rtems/score/copyrt.h> #include <rtems/score/heap.h> #include <rtems/score/interr.h> @@ -221,19 +224,24 @@ rtems_interrupt_level rtems_initialize_executive_early( _System_state_Set( SYSTEM_STATE_BEFORE_MULTITASKING ); - if ( cpu_table->pretasking_hook ) - (*cpu_table->pretasking_hook)(); - /* * No threads should be created before this point!!! + * _Thread_Executing and _Thread_Heir are not set. * * At this point all API extensions are in place. After the call to - * _Thread_Create_idle() _Thread_Executing will be set. - * and _Thread_Heir are not set yet. + * _Thread_Create_idle() _Thread_Executing and _Thread_Heir will be set. */ _Thread_Create_idle(); + + /* + * Scheduling can properly occur now as long as we avoid dispatching. + */ + + if ( cpu_table->pretasking_hook ) + (*cpu_table->pretasking_hook)(); + #if defined(RTEMS_MULTIPROCESSING) _MPCI_Create_server(); #endif |