From 6d4b390f99af0e9d5873a3cb8ebaccfa05cbe37b Mon Sep 17 00:00:00 2001 From: Matt Joyce Date: Mon, 23 May 2022 12:27:56 +0200 Subject: Support _REENT_THREAD_LOCAL Newlib configuration In case the Newlib _REENT_THREAD_LOCAL configuration option is enabled, the struct _reent is not defined (there is only a forward declaration in ). Instead, the usual members of struct _reent are available as dedicatd thread-local storage objects. Update #4560. --- cpukit/libcsupport/src/newlibc_reent.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'cpukit/libcsupport/src/newlibc_reent.c') diff --git a/cpukit/libcsupport/src/newlibc_reent.c b/cpukit/libcsupport/src/newlibc_reent.c index 2dccfd0375..ee82f00858 100644 --- a/cpukit/libcsupport/src/newlibc_reent.c +++ b/cpukit/libcsupport/src/newlibc_reent.c @@ -29,6 +29,7 @@ #include #include +#ifndef _REENT_THREAD_LOCAL bool newlib_create_hook( rtems_tcb *current_task RTEMS_UNUSED, rtems_tcb *creating_task @@ -38,12 +39,17 @@ bool newlib_create_hook( return true; } +#endif void newlib_terminate_hook( rtems_tcb *current_task ) { +#ifdef _REENT_THREAD_LOCAL + _reclaim_reent(NULL); +#else _reclaim_reent(current_task->libc_reent); +#endif } #endif -- cgit v1.2.3