forked from Imagelibrary/rtems
Require __getreent()
This function is used by Newlib since 2013-07-09 (Git commit 9b51cd8c6b9cdd067d9648a7ab952884019c56a5).
This commit is contained in:
@@ -180,6 +180,10 @@ AC_CHECK_HEADER([signal.h],[
|
||||
AC_CHECK_TYPES([sighandler_t])
|
||||
])
|
||||
|
||||
if test x"$RTEMS_USE_NEWLIB" = xyes ; then
|
||||
AC_CHECK_DECLS([__getreent],[],[AC_MSG_ERROR([__getreent() in <sys/reent.h> is mandatory])],[#include <sys/reent.h>])
|
||||
fi
|
||||
|
||||
RTEMS_CHECK_MULTIPROCESSING
|
||||
RTEMS_CHECK_POSIX_API
|
||||
RTEMS_CHECK_NETWORKING
|
||||
|
||||
@@ -35,15 +35,6 @@ bool newlib_create_hook(
|
||||
rtems_tcb *creating_task
|
||||
)
|
||||
{
|
||||
#if !defined(__DYNAMIC_REENT__)
|
||||
if (_Thread_libc_reent == 0)
|
||||
{
|
||||
_REENT = _GLOBAL_REENT;
|
||||
|
||||
_Thread_Set_libc_reent (&_REENT);
|
||||
}
|
||||
#endif
|
||||
|
||||
_REENT_INIT_PTR((creating_task->libc_reent)); /* GCC extension: structure constants */
|
||||
|
||||
return true;
|
||||
|
||||
@@ -2417,7 +2417,7 @@ const rtems_libio_helper rtems_fs_init_helper =
|
||||
#define CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS 0
|
||||
#endif
|
||||
|
||||
#if defined(RTEMS_NEWLIB) && defined(__DYNAMIC_REENT__)
|
||||
#if defined(RTEMS_NEWLIB)
|
||||
struct _reent *__getreent(void)
|
||||
{
|
||||
#ifdef CONFIGURE_DISABLE_NEWLIB_REENTRANCY
|
||||
|
||||
@@ -75,16 +75,6 @@ SCORE_EXTERN Thread_Information _Thread_Internal_information;
|
||||
SCORE_EXTERN Thread_Control *_Thread_Allocated_fp;
|
||||
#endif
|
||||
|
||||
#if !defined(__DYNAMIC_REENT__)
|
||||
/**
|
||||
* 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 struct _reent **_Thread_libc_reent;
|
||||
#endif
|
||||
|
||||
#define THREAD_CHAIN_NODE_TO_THREAD( node ) \
|
||||
RTEMS_CONTAINER_OF( node, Thread_Control, Wait.Node.Chain )
|
||||
|
||||
@@ -1501,28 +1491,6 @@ RTEMS_INLINE_ROUTINE void _Thread_Debug_set_real_processor(
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(__DYNAMIC_REENT__)
|
||||
/**
|
||||
* This routine returns the C library re-enterant pointer.
|
||||
*/
|
||||
|
||||
RTEMS_INLINE_ROUTINE struct _reent **_Thread_Get_libc_reent( void )
|
||||
{
|
||||
return _Thread_libc_reent;
|
||||
}
|
||||
|
||||
/**
|
||||
* This routine set the C library re-enterant pointer.
|
||||
*/
|
||||
|
||||
RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent (
|
||||
struct _reent **libc_reent
|
||||
)
|
||||
{
|
||||
_Thread_libc_reent = libc_reent;
|
||||
}
|
||||
#endif
|
||||
|
||||
/** @}*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -104,16 +104,6 @@ void _Thread_Do_dispatch( Per_CPU_Control *cpu_self, ISR_Level level )
|
||||
&cpu_self->time_of_last_context_switch
|
||||
);
|
||||
|
||||
#if !defined(__DYNAMIC_REENT__)
|
||||
/*
|
||||
* Switch libc's task specific data.
|
||||
*/
|
||||
if ( _Thread_libc_reent ) {
|
||||
executing->libc_reent = *_Thread_libc_reent;
|
||||
*_Thread_libc_reent = heir->libc_reent;
|
||||
}
|
||||
#endif
|
||||
|
||||
_User_extensions_Thread_switch( executing, heir );
|
||||
_Thread_Save_fp( executing );
|
||||
_Context_Switch( &executing->Registers, &heir->Registers );
|
||||
|
||||
Reference in New Issue
Block a user