diff options
author | Matt Joyce <matthew.joyce@embedded-brains.de> | 2022-05-23 12:27:56 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-07-21 07:22:13 +0200 |
commit | 6d4b390f99af0e9d5873a3cb8ebaccfa05cbe37b (patch) | |
tree | 69d86bdace4793f3546d387fc00297917c234467 /cpukit/include/rtems/libcsupport.h | |
parent | sptests: Disable Newlib reentrancy (diff) | |
download | rtems-6d4b390f99af0e9d5873a3cb8ebaccfa05cbe37b.tar.bz2 |
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
<sys/reent.h>). Instead, the usual members of struct _reent are available as
dedicatd thread-local storage objects.
Update #4560.
Diffstat (limited to 'cpukit/include/rtems/libcsupport.h')
-rw-r--r-- | cpukit/include/rtems/libcsupport.h | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/cpukit/include/rtems/libcsupport.h b/cpukit/include/rtems/libcsupport.h index 212eb16e59..67a09dc2a2 100644 --- a/cpukit/include/rtems/libcsupport.h +++ b/cpukit/include/rtems/libcsupport.h @@ -96,27 +96,33 @@ extern int malloc_info(Heap_Information_block *the_info); /* * Prototypes required to install newlib reentrancy user extension */ + +#ifdef _REENT_THREAD_LOCAL +#define _NEWLIB_CREATE_HOOK NULL +#else bool newlib_create_hook( rtems_tcb *current_task, rtems_tcb *creating_task ); +#define _NEWLIB_CREATE_HOOK newlib_create_hook +#endif void newlib_terminate_hook( rtems_tcb *current_task ); #define RTEMS_NEWLIB_EXTENSION \ -{ \ - newlib_create_hook, /* rtems_task_create */ \ - 0, /* rtems_task_start */ \ - 0, /* rtems_task_restart */ \ - 0, /* rtems_task_delete */ \ - 0, /* task_switch */ \ - 0, /* task_begin */ \ - 0, /* task_exitted */ \ - 0, /* fatal */ \ - newlib_terminate_hook /* thread terminate */ \ -} + { \ + _NEWLIB_CREATE_HOOK, /* thread_create */ \ + NULL, /* thread_start */ \ + NULL, /* thread_restart */ \ + NULL, /* thread_delete */ \ + NULL, /* thread_switch */ \ + NULL, /* thread_begin */ \ + NULL, /* thread_exitted */ \ + NULL, /* fatal */ \ + newlib_terminate_hook /* thread_terminate */ \ + } typedef struct { uint32_t active_barriers; |