summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/sapi/ChangeLog7
-rw-r--r--c/src/exec/sapi/src/exinit.c18
-rw-r--r--cpukit/sapi/ChangeLog7
-rw-r--r--cpukit/sapi/src/exinit.c18
4 files changed, 40 insertions, 10 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
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