From 5b87515dbe86bda9d6fbc7ddfdbee0ea7b1eee42 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 27 Sep 2001 13:33:52 +0000 Subject: 2001-09-27 Eric Norum * 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. --- c/src/exec/score/ChangeLog | 14 ++++++++++++++ c/src/exec/score/src/threadhandler.c | 13 +++++++++++++ cpukit/score/ChangeLog | 14 ++++++++++++++ cpukit/score/src/threadhandler.c | 13 +++++++++++++ 4 files changed, 54 insertions(+) diff --git a/c/src/exec/score/ChangeLog b/c/src/exec/score/ChangeLog index f12205258e..287701924d 100644 --- a/c/src/exec/score/ChangeLog +++ b/c/src/exec/score/ChangeLog @@ -1,4 +1,18 @@ +2001-09-27 Eric Norum + + * 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 + + * 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 * src/coremutex.c, src/coremutexseize.c, src/coremutexsurrender.c, diff --git a/c/src/exec/score/src/threadhandler.c b/c/src/exec/score/src/threadhandler.c index cfdb9292d1..d3755f4466 100644 --- a/c/src/exec/score/src/threadhandler.c +++ b/c/src/exec/score/src/threadhandler.c @@ -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: diff --git a/cpukit/score/ChangeLog b/cpukit/score/ChangeLog index f12205258e..287701924d 100644 --- a/cpukit/score/ChangeLog +++ b/cpukit/score/ChangeLog @@ -1,4 +1,18 @@ +2001-09-27 Eric Norum + + * 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 + + * 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 * src/coremutex.c, src/coremutexseize.c, src/coremutexsurrender.c, diff --git a/cpukit/score/src/threadhandler.c b/cpukit/score/src/threadhandler.c index cfdb9292d1..d3755f4466 100644 --- a/cpukit/score/src/threadhandler.c +++ b/cpukit/score/src/threadhandler.c @@ -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: -- cgit v1.2.3