2001-09-27 Eric Norum <eric.norum@usask.ca>

* src/threadhandler.c: Now process C++ global constructors
	(_init) as part of the first task execution not in BSP space.
	This depends on the toolset defining USE_INIT_FINI so you
	have to have the right toolset version.
This commit is contained in:
Joel Sherrill
2001-09-27 13:33:52 +00:00
parent 1ef8e3d448
commit 5b87515dbe
4 changed files with 54 additions and 0 deletions

View File

@@ -1,4 +1,18 @@
2001-09-27 Eric Norum <eric.norum@usask.ca>
* src/threadhandler.c: Now process C++ global constructors
(_init) as part of the first task execution not in BSP space.
This depends on the toolset defining USE_INIT_FINI so you
have to have the right toolset version.
2001-09-23 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/rtems/score/Makefile.am: Use 'PREINSTALL_FILES ='.
* include/rtems/Makefile.am: Use 'PREINSTALL_FILES ='.
* inline/rtems/score/Makefile.am: Use 'PREINSTALL_FILES ='.
* macros/rtems/score/Makefile.am: Use 'PREINSTALL_FILES ='.
2001-08-30 Joel Sherrill <joel@OARcorp.com>
* src/coremutex.c, src/coremutexseize.c, src/coremutexsurrender.c,

View File

@@ -58,6 +58,10 @@ void _Thread_Handler( void )
{
ISR_Level level;
Thread_Control *executing;
#ifdef USE_INIT_FINI
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
@@ -69,6 +73,11 @@ void _Thread_Handler( void )
level = executing->Start.isr_level;
_ISR_Set_level(level);
#ifdef USE_INIT_FINI
doneCons = doneConstructors;
doneConstructors = 1;
#endif
/*
* Take care that 'begin' extensions get to complete before
* 'switch' extensions can run. This means must keep dispatch
@@ -82,6 +91,10 @@ void _Thread_Handler( void )
*/
_Thread_Enable_dispatch();
#ifdef USE_INIT_FINI
if (!doneCons)
_init ();
#endif
switch ( executing->Start.prototype ) {
case THREAD_START_NUMERIC:

View File

@@ -1,4 +1,18 @@
2001-09-27 Eric Norum <eric.norum@usask.ca>
* src/threadhandler.c: Now process C++ global constructors
(_init) as part of the first task execution not in BSP space.
This depends on the toolset defining USE_INIT_FINI so you
have to have the right toolset version.
2001-09-23 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* include/rtems/score/Makefile.am: Use 'PREINSTALL_FILES ='.
* include/rtems/Makefile.am: Use 'PREINSTALL_FILES ='.
* inline/rtems/score/Makefile.am: Use 'PREINSTALL_FILES ='.
* macros/rtems/score/Makefile.am: Use 'PREINSTALL_FILES ='.
2001-08-30 Joel Sherrill <joel@OARcorp.com>
* src/coremutex.c, src/coremutexseize.c, src/coremutexsurrender.c,

View File

@@ -58,6 +58,10 @@ void _Thread_Handler( void )
{
ISR_Level level;
Thread_Control *executing;
#ifdef USE_INIT_FINI
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
@@ -69,6 +73,11 @@ void _Thread_Handler( void )
level = executing->Start.isr_level;
_ISR_Set_level(level);
#ifdef USE_INIT_FINI
doneCons = doneConstructors;
doneConstructors = 1;
#endif
/*
* Take care that 'begin' extensions get to complete before
* 'switch' extensions can run. This means must keep dispatch
@@ -82,6 +91,10 @@ void _Thread_Handler( void )
*/
_Thread_Enable_dispatch();
#ifdef USE_INIT_FINI
if (!doneCons)
_init ();
#endif
switch ( executing->Start.prototype ) {
case THREAD_START_NUMERIC: