forked from Imagelibrary/rtems
2008-01-03 Till Straumann <strauman@slac.stanford.edu>
* 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().
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2008-01-03 Till Straumann <strauman@slac.stanford.edu>
|
||||||
|
|
||||||
|
* 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().
|
||||||
|
|
||||||
2007-12-28 Joel Sherrill <joel.sherrill@OARcorp.com>
|
2007-12-28 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||||
|
|
||||||
* libcsupport/Makefile.am: _rename_r is required by newlib 1.16.0.
|
* libcsupport/Makefile.am: _rename_r is required by newlib 1.16.0.
|
||||||
|
|||||||
@@ -19,10 +19,6 @@
|
|||||||
#include <rtems/score/sysstate.h>
|
#include <rtems/score/sysstate.h>
|
||||||
#include <rtems/score/thread.h>
|
#include <rtems/score/thread.h>
|
||||||
|
|
||||||
#if defined(__USE_INIT_FINI__)
|
|
||||||
#include <stdlib.h> /* for atexit() */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rtems_shutdown_executive
|
* rtems_shutdown_executive
|
||||||
*
|
*
|
||||||
@@ -40,11 +36,6 @@ void rtems_shutdown_executive(
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ( _System_state_Current != SYSTEM_STATE_SHUTDOWN ) {
|
if ( _System_state_Current != SYSTEM_STATE_SHUTDOWN ) {
|
||||||
|
|
||||||
#if defined(__USE_INIT_FINI__)
|
|
||||||
extern void _fini( void );
|
|
||||||
atexit( _fini );
|
|
||||||
#endif
|
|
||||||
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
|
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
|
||||||
_Thread_Stop_multitasking();
|
_Thread_Stop_multitasking();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,10 @@
|
|||||||
#include <rtems/score/userext.h>
|
#include <rtems/score/userext.h>
|
||||||
#include <rtems/score/wkspace.h>
|
#include <rtems/score/wkspace.h>
|
||||||
|
|
||||||
|
#if defined(__USE_INIT_FINI__)
|
||||||
|
#include <stdlib.h> /* for atexit() */
|
||||||
|
#endif
|
||||||
|
|
||||||
/*PAGE
|
/*PAGE
|
||||||
*
|
*
|
||||||
* _Thread_Handler
|
* _Thread_Handler
|
||||||
@@ -125,7 +129,11 @@ void _Thread_Handler( void )
|
|||||||
* RTEMS target configuration. --joel (12 May 2007)
|
* RTEMS target configuration. --joel (12 May 2007)
|
||||||
*/
|
*/
|
||||||
if (!doneCons) /* && (volatile void *)_init) */
|
if (!doneCons) /* && (volatile void *)_init) */
|
||||||
|
{
|
||||||
|
extern void _fini( void );
|
||||||
_init ();
|
_init ();
|
||||||
|
atexit( _fini );
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(__USE__MAIN__)
|
#if defined(__USE__MAIN__)
|
||||||
if (!doneCons && _main)
|
if (!doneCons && _main)
|
||||||
|
|||||||
Reference in New Issue
Block a user