From 0df8293e2b26cfd56824c90803d427dcbb49f738 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 15 May 2002 15:14:58 +0000 Subject: 2002-05-15 Chris Johns * 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. --- c/src/exec/score/include/rtems/score/thread.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'c/src/exec/score/include/rtems') diff --git a/c/src/exec/score/include/rtems/score/thread.h b/c/src/exec/score/include/rtems/score/thread.h index 07f5d2a504..18d4774a5d 100644 --- a/c/src/exec/score/include/rtems/score/thread.h +++ b/c/src/exec/score/include/rtems/score/thread.h @@ -220,6 +220,7 @@ struct Thread_Control_struct { #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) void *fp_context; #endif + void *libc_reent; void *API_Extensions[ THREAD_API_LAST + 1 ]; void **extensions; rtems_task_variable_t *task_variables; @@ -316,6 +317,15 @@ SCORE_EXTERN Thread_Control *_Thread_Heir; SCORE_EXTERN Thread_Control *_Thread_Allocated_fp; #endif +/* + * The C library re-enter-rant global pointer. Some C library implementations + * such as newlib have a single global pointer that changed during a context + * switch. The pointer points to that global pointer. The Thread control block + * holds a pointer to the task specific data. + */ + +SCORE_EXTERN void **_Thread_libc_reent; + /* * _Thread_Handler_initialization * -- cgit v1.2.3