summaryrefslogtreecommitdiffstats
path: root/c/src/exec/sapi
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2002-05-09 21:41:05 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2002-05-09 21:41:05 +0000
commita2a8c5b417ae7ed5d3889ff236c2b1b5fb96f2f9 (patch)
treec70c14869fb0357a7d340ece9f1bd6d65753758f /c/src/exec/sapi
parent2001-05-09 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-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 'c/src/exec/sapi')
-rw-r--r--c/src/exec/sapi/ChangeLog7
-rw-r--r--c/src/exec/sapi/src/exinit.c18
2 files changed, 20 insertions, 5 deletions
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 <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/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 <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