From a2a8c5b417ae7ed5d3889ff236c2b1b5fb96f2f9 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 9 May 2002 21:41:05 +0000 Subject: 2001-05-09 Joel Sherrill * 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. --- c/src/exec/sapi/ChangeLog | 7 +++++++ c/src/exec/sapi/src/exinit.c | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) (limited to 'c/src/exec/sapi') diff --git a/c/src/exec/sapi/ChangeLog b/c/src/exec/sapi/ChangeLog index d31f1841bf..c77a725239 100644 --- a/c/src/exec/sapi/ChangeLog +++ b/c/src/exec/sapi/ChangeLog @@ -1,3 +1,10 @@ +2001-05-09 Joel Sherrill + + * 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 * Per PR126, configuration structures now match docs. diff --git a/c/src/exec/sapi/src/exinit.c b/c/src/exec/sapi/src/exinit.c index b44f06df64..af921c0510 100644 --- a/c/src/exec/sapi/src/exinit.c +++ b/c/src/exec/sapi/src/exinit.c @@ -29,6 +29,9 @@ #include #include +#if 0 +#include +#endif #include #include #include @@ -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 -- cgit v1.2.3