diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 0b976c3150..f0d8b0c12a 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,9 @@ +2011-07-13 Joel Sherrill + + PR 1824/cpukit + * sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/exshutdown.c: + Return exit/shutdown status back to boot_card(). + 2011-07-11 Sebastien Bourdeauducq PR 1823/cpukit diff --git a/cpukit/sapi/include/rtems/init.h b/cpukit/sapi/include/rtems/init.h index 8cc7aa5c31..952b075c14 100644 --- a/cpukit/sapi/include/rtems/init.h +++ b/cpukit/sapi/include/rtems/init.h @@ -76,8 +76,11 @@ void rtems_initialize_device_drivers(void); * This routine implements the early portion of rtems_initialize_executive * directive up to the pretasking hook. This directive is invoked at system * startup to initialize the RTEMS multitasking environment. + * + * @return This method returns the status code passed into the + * @ref rtems_shutdown_executive directive. */ -void rtems_initialize_start_multitasking(void); +uint32_t rtems_initialize_start_multitasking(void); /** * @brief rtems_shutdown_executive diff --git a/cpukit/sapi/src/exinit.c b/cpukit/sapi/src/exinit.c index 860d758774..34b83c7180 100644 --- a/cpukit/sapi/src/exinit.c +++ b/cpukit/sapi/src/exinit.c @@ -225,9 +225,8 @@ void rtems_initialize_device_drivers(void) _API_extensions_Run_postdriver(); } -void rtems_initialize_start_multitasking(void) +uint32_t rtems_initialize_start_multitasking(void) { - _System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING ); _Thread_Start_multitasking(); @@ -240,4 +239,6 @@ void rtems_initialize_start_multitasking(void) ******************************************************************* ******************************************************************* *******************************************************************/ + + return _Per_CPU_Information[0].idle->Wait.return_code; } diff --git a/cpukit/sapi/src/exshutdown.c b/cpukit/sapi/src/exshutdown.c index 1de3b843e2..f004dbd755 100644 --- a/cpukit/sapi/src/exshutdown.c +++ b/cpukit/sapi/src/exshutdown.c @@ -44,6 +44,9 @@ void rtems_shutdown_executive( #if defined(RTEMS_SMP) _SMP_Request_other_cores_to_shutdown(); #endif + + _Per_CPU_Information[0].idle->Wait.return_code = result; + _System_state_Set( SYSTEM_STATE_SHUTDOWN ); _Thread_Stop_multitasking(); }