diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-05-15 15:14:58 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-05-15 15:14:58 +0000 |
commit | 0df8293e2b26cfd56824c90803d427dcbb49f738 (patch) | |
tree | 3ecc5d39a954200758071dd742b03484518a51a3 /c/src/exec/score/src/threaddispatch.c | |
parent | 2001-05-15 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-0df8293e2b26cfd56824c90803d427dcbb49f738.tar.bz2 |
2002-05-15 Chris Johns <ccj@acm.org>
* include/rtems/score/thread.h, inline/rtems/score/thread.inl,
src/threaddispatch.c, src/threadinitialize.c:
Move the C library re-enterrant support directly into
the thread dispatch code. RTEMS needs libc and so requiring
libc to use a user extension with its overhead is not the best
solution. This patch lowers the overhead to 2 pointer moves.
Diffstat (limited to 'c/src/exec/score/src/threaddispatch.c')
-rw-r--r-- | c/src/exec/score/src/threaddispatch.c | 8 |
1 files changed, 8 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 ) |