diff options
Diffstat (limited to 'c/src/exec/score/src')
-rw-r--r-- | c/src/exec/score/src/threaddispatch.c | 8 | ||||
-rw-r--r-- | c/src/exec/score/src/threadinitialize.c | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/c/src/exec/score/src/threaddispatch.c b/c/src/exec/score/src/threaddispatch.c index 18953ae596..eedc8cc9ee 100644 --- a/c/src/exec/score/src/threaddispatch.c +++ b/c/src/exec/score/src/threaddispatch.c @@ -74,6 +74,14 @@ void _Thread_Dispatch( void ) heir->ticks_executed++; + /* + * Switch libc's task specific data. + */ + if ( _Thread_libc_reent ) { + executing->libc_reent = *_Thread_libc_reent; + *_Thread_libc_reent = heir->libc_reent; + } + _User_extensions_Thread_switch( executing, heir ); if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE ) diff --git a/c/src/exec/score/src/threadinitialize.c b/c/src/exec/score/src/threadinitialize.c index feb07836e3..e850e3fe1f 100644 --- a/c/src/exec/score/src/threadinitialize.c +++ b/c/src/exec/score/src/threadinitialize.c @@ -115,6 +115,12 @@ boolean _Thread_Initialize( #endif /* + * Clear the libc reent hook. + */ + + the_thread->libc_reent = NULL; + + /* * Allocate the extensions area for this thread */ |