summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cpukit/libcsupport/src/__usrenv.c27
-rw-r--r--cpukit/libcsupport/src/base_fs.c9
-rw-r--r--cpukit/libcsupport/src/libio_init.c3
-rw-r--r--cpukit/libcsupport/src/newlibc_exit.c8
-rw-r--r--cpukit/libcsupport/src/newlibc_init.c20
-rw-r--r--cpukit/libcsupport/src/newlibc_reent.c (renamed from cpukit/libcsupport/src/newlibc.c)35
-rw-r--r--cpukit/libcsupport/src/sync.c8
7 files changed, 55 insertions, 55 deletions
diff --git a/cpukit/libcsupport/src/__usrenv.c b/cpukit/libcsupport/src/__usrenv.c
new file mode 100644
index 0000000000..0b3469fa1a
--- /dev/null
+++ b/cpukit/libcsupport/src/__usrenv.c
@@ -0,0 +1,27 @@
+/*
+ * COPYRIGHT (c) 1989-2008.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+#include <rtems/libio.h>
+#include <rtems/libio_.h>
+
+/*
+ * Global information for POSIX Process Environment Support
+ */
+
+rtems_user_env_t rtems_global_user_env;
+rtems_user_env_t * rtems_current_user_env = &rtems_global_user_env;
+
+
diff --git a/cpukit/libcsupport/src/base_fs.c b/cpukit/libcsupport/src/base_fs.c
index 4ce53b0e4b..91466a5b07 100644
--- a/cpukit/libcsupport/src/base_fs.c
+++ b/cpukit/libcsupport/src/base_fs.c
@@ -1,7 +1,7 @@
/*
* Base file system initialization
*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -20,13 +20,6 @@
#include <rtems/libio_.h>
/*
- * Global information for the base file system.
- */
-
-rtems_user_env_t rtems_global_user_env;
-rtems_user_env_t * rtems_current_user_env = &rtems_global_user_env;
-
-/*
* Default mode for created files.
*/
diff --git a/cpukit/libcsupport/src/libio_init.c b/cpukit/libcsupport/src/libio_init.c
index 4968058637..9bb96e40c2 100644
--- a/cpukit/libcsupport/src/libio_init.c
+++ b/cpukit/libcsupport/src/libio_init.c
@@ -86,5 +86,6 @@ void rtems_libio_init( void )
* Initialize the base file system infrastructure.
*/
- rtems_filesystem_initialize();
+ if (rtems_fs_init_helper)
+ (* rtems_fs_init_helper)();
}
diff --git a/cpukit/libcsupport/src/newlibc_exit.c b/cpukit/libcsupport/src/newlibc_exit.c
index 68212b692e..f7f8a6e481 100644
--- a/cpukit/libcsupport/src/newlibc_exit.c
+++ b/cpukit/libcsupport/src/newlibc_exit.c
@@ -40,7 +40,7 @@ int _fwalk(struct _reent *ptr, int (*function) (FILE *) );
/* do we think we are reentrant? */
extern int libc_reentrant;
-extern struct _reent libc_global_reent __ATTRIBUTE_IMPURE_PTR__;
+extern struct _reent * const _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
/*
* CYGNUS newlib routine that does atexit() processing and flushes
@@ -66,15 +66,15 @@ void libc_wrapup(void)
_wrapup_reent(0);
*/
- if (_REENT != &libc_global_reent) {
- _wrapup_reent(&libc_global_reent);
+ if (_REENT != _global_impure_ptr) {
+ _wrapup_reent(_global_impure_ptr);
#if 0
/* Don't reclaim this one, just in case we do printfs
* on the way out to ROM.
*/
_reclaim_reent(&libc_global_reent);
#endif
- _REENT = &libc_global_reent;
+ _REENT = _global_impure_ptr;
}
/*
diff --git a/cpukit/libcsupport/src/newlibc_init.c b/cpukit/libcsupport/src/newlibc_init.c
index a37ab29663..dbf9544fd5 100644
--- a/cpukit/libcsupport/src/newlibc_init.c
+++ b/cpukit/libcsupport/src/newlibc_init.c
@@ -17,22 +17,7 @@
#include "config.h"
#endif
-#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__
-#include <rtems.h>
-
#if defined(RTEMS_NEWLIB)
-#include <rtems/libcsupport.h>
-
-/* Since we compile with strict ANSI we need to undef it to get
- * prototypes for extensions
- */
-#undef __STRICT_ANSI__
-
-#include <stdlib.h> /* for free() */
-#include <string.h> /* for memset() */
-
-#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
-#include <errno.h>
/*
* Init libc for CYGNUS newlib
@@ -48,14 +33,9 @@
*/
-struct _reent libc_global_reent
- __ATTRIBUTE_IMPURE_PTR__ = _REENT_INIT(libc_global_reent);
void
libc_init(void)
{
- _REENT = &libc_global_reent;
-
- _Thread_Set_libc_reent (&_REENT);
}
#endif
diff --git a/cpukit/libcsupport/src/newlibc.c b/cpukit/libcsupport/src/newlibc_reent.c
index 79c1dc7dd4..ba8078a135 100644
--- a/cpukit/libcsupport/src/newlibc.c
+++ b/cpukit/libcsupport/src/newlibc_reent.c
@@ -1,10 +1,4 @@
/*
- * Implementation of hooks for the CYGNUS newlib libc
- * These hooks set things up so that:
- * + '_REENT' is switched at task switch time.
- *
- * COPYRIGHT (c) 1994 by Division Incorporated
- *
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
@@ -50,8 +44,7 @@
int _fwalk(struct _reent *ptr, int (*function) (FILE *) );
-extern struct _reent libc_global_reent __ATTRIBUTE_IMPURE_PTR__;
-
+extern struct _reent * const _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
/*
* reent struct allocation moved here from libc_start_hook() to avoid
* mutual exclusion problems when memory is allocated from the start hook.
@@ -59,13 +52,20 @@ extern struct _reent libc_global_reent __ATTRIBUTE_IMPURE_PTR__;
* Memory is also now allocated from the workspace rather than the heap.
* -- ptorre 9/30/03
*/
-bool libc_create_hook(
+bool newlib_create_hook(
rtems_tcb *current_task,
rtems_tcb *creating_task
)
{
struct _reent *ptr;
+ if (_Thread_libc_reent == 0)
+ {
+ _REENT = _global_impure_ptr;
+
+ _Thread_Set_libc_reent (&_REENT);
+ }
+
/* NOTE: The RTEMS malloc is reentrant without a reent ptr since
* it is based on the Classic API Region Manager.
*/
@@ -81,13 +81,12 @@ bool libc_create_hook(
#endif
if (ptr) {
-
- _REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
- creating_task->libc_reent = ptr;
- return true;
+ _REENT_INIT_PTR((ptr)); /* GCC extension: structure constants */
+ creating_task->libc_reent = ptr;
+ return TRUE;
}
- else
- return false;
+
+ return FALSE;
}
/*
@@ -95,7 +94,7 @@ bool libc_create_hook(
*/
#ifdef NEED_SETVBUF
-rtems_extension libc_begin_hook(rtems_tcb *current_task)
+rtems_extension newlib_begin_hook(rtems_tcb *current_task)
{
setvbuf( stdout, NULL, _IOLBF, BUFSIZ );
}
@@ -128,7 +127,7 @@ int newlib_free_buffers(
return 0;
}
-rtems_extension libc_delete_hook(
+rtems_extension newlib_delete_hook(
rtems_tcb *current_task,
rtems_tcb *deleted_task
)
@@ -145,7 +144,7 @@ rtems_extension libc_delete_hook(
ptr = deleted_task->libc_reent;
}
- if (ptr && ptr != &libc_global_reent) {
+ if (ptr && ptr != _global_impure_ptr) {
/*
_wrapup_reent(ptr);
_reclaim_reent(ptr);
diff --git a/cpukit/libcsupport/src/sync.c b/cpukit/libcsupport/src/sync.c
index 14c20cebb3..8db3f62161 100644
--- a/cpukit/libcsupport/src/sync.c
+++ b/cpukit/libcsupport/src/sync.c
@@ -7,7 +7,7 @@
* fsync()
* fdatasync()
*
- * COPYRIGHT (c) 1989-2003.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -71,10 +71,10 @@ static void sync_per_thread(Thread_Control *t)
}
/*
- * libc_global_reent is not prototyped in any .h files.
+ * _global_impure_ptr is not prototyped in any .h files.
* We have to extern it here.
*/
-extern struct _reent libc_global_reent;
+extern struct _reent * const _global_impure_ptr __ATTRIBUTE_IMPURE_PTR__;
void sync(void)
{
@@ -82,7 +82,7 @@ void sync(void)
/*
* Walk the one used initially by RTEMS.
*/
- _fwalk(&libc_global_reent, sync_wrapper);
+ _fwalk(_global_impure_ptr, sync_wrapper);
/*
* XXX Do we walk the one used globally by newlib?