forked from Imagelibrary/rtems
* score/src/threadhandler.c, sapi/src/exshutdown.c: cannot call _fini via atexit() from rtems_shutdown_executive() because at the point where rtems_shutdown_executive is called the C-library is already dead. Instead, register an atexit(_fini) after calling _init().
43 lines
945 B
C
43 lines
945 B
C
/*
|
|
* Initialization Manager
|
|
*
|
|
* COPYRIGHT (c) 1989-1999.
|
|
* On-Line Applications Research Corporation (OAR).
|
|
*
|
|
* The license and distribution terms for this file may be
|
|
* found in the file LICENSE in this distribution or at
|
|
* http://www.rtems.com/license/LICENSE.
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
#if HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include <rtems/system.h>
|
|
#include <rtems/score/sysstate.h>
|
|
#include <rtems/score/thread.h>
|
|
|
|
/*
|
|
* rtems_shutdown_executive
|
|
*
|
|
* This kernel routine shutdowns the executive. It halts multitasking
|
|
* and returns control to the application execution "thread" which
|
|
* initialially invoked the rtems_initialize_executive directive.
|
|
*
|
|
* Input parameters: NONE
|
|
*
|
|
* Output parameters: NONE
|
|
*/
|
|
|
|
void rtems_shutdown_executive(
|
|
uint32_t result
|
|
)
|
|
{
|
|
if ( _System_state_Current != SYSTEM_STATE_SHUTDOWN ) {
|
|
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
|
|
_Thread_Stop_multitasking();
|
|
}
|
|
}
|