From f58ef8ae7a0ff7e31d89d1b792a70b7ba7dbac6b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 13 Jul 2011 18:34:22 +0000 Subject: [PATCH] 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(). --- cpukit/ChangeLog | 6 ++++++ cpukit/sapi/include/rtems/init.h | 5 ++++- cpukit/sapi/src/exinit.c | 5 +++-- cpukit/sapi/src/exshutdown.c | 3 +++ 4 files changed, 16 insertions(+), 3 deletions(-) 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(); }