Require __getreent()

This function is used by Newlib since 2013-07-09 (Git commit
9b51cd8c6b9cdd067d9648a7ab952884019c56a5).
This commit is contained in:
Sebastian Huber
2015-11-25 08:33:31 +01:00
parent 8ce0b0cb19
commit ac5f2442e3
5 changed files with 5 additions and 52 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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 );