From 389fa85047aee8511379a80c5a7ebbfdb302791f Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 14 Feb 1996 17:06:40 +0000 Subject: Moved some initialization from the system initialization thread to initialize_executive_early. This was done to clear up an ordering problem in which global tasks could be created before the MPCI layer was initialized. --- c/src/exec/sapi/src/exinit.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'c/src/exec/sapi') diff --git a/c/src/exec/sapi/src/exinit.c b/c/src/exec/sapi/src/exinit.c index c75018bca8..303e235e0e 100644 --- a/c/src/exec/sapi/src/exinit.c +++ b/c/src/exec/sapi/src/exinit.c @@ -174,13 +174,18 @@ rtems_interrupt_level rtems_initialize_executive_early( multiprocessing_table->maximum_proxies ); + /* + * No threads should be created before this point!!! _Thread_Executing + * and _Thread_Heir are not set yet. + */ + + _Internal_threads_Initialization(); + _MPCI_Handler_initialization( multiprocessing_table->User_mpci_table, RTEMS_TIMEOUT ); - _Internal_threads_Initialization(); - /* MANAGERS */ _Extension_Manager_initialization( configuration_table->maximum_extensions ); @@ -200,6 +205,41 @@ rtems_interrupt_level rtems_initialize_executive_early( _System_state_Set( SYSTEM_STATE_BEFORE_MULTITASKING ); + /* + * Run the API and BSPs predriver hook. + */ + + _API_extensions_Run_predriver(); + + if ( _CPU_Table.predriver_hook ) + (*_CPU_Table.predriver_hook)(); + + /* + * Initialize all the device drivers and initialize the MPCI layer. + * + * NOTE: The MPCI may be build upon a device driver. + */ + + _IO_Initialize_all_drivers(); + + if ( _System_state_Is_multiprocessing ) { + _MPCI_Initialization(); + _Internal_threads_MP_Send_process_packet( + INTERNAL_THREADS_MP_SYSTEM_VERIFY + ); + } + + /* + * Run the APIs and BSPs postdriver hooks. + * + * The API extensions are supposed to create user initialization tasks. + */ + + _API_extensions_Run_postdriver(); + + if ( _CPU_Table.postdriver_hook ) + (*_CPU_Table.postdriver_hook)(); + return bsp_level; } -- cgit v1.2.3