diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-04-22 16:50:17 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-04-22 16:50:17 +0000 |
commit | 1f94ed6bfdb8b83fcfcb59db0a9f76eb950b4db0 (patch) | |
tree | 441f57ebc555db3a382bac7e8dedd51ba55ab3e4 /cpukit/libcsupport/src/newlibc.c | |
parent | Updates from Tony Bennett. rtems_environp removed among other minor things. (diff) | |
download | rtems-1f94ed6bfdb8b83fcfcb59db0a9f76eb950b4db0.tar.bz2 |
Updates from Tony Bennett.
Diffstat (limited to 'cpukit/libcsupport/src/newlibc.c')
-rw-r--r-- | cpukit/libcsupport/src/newlibc.c | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/cpukit/libcsupport/src/newlibc.c b/cpukit/libcsupport/src/newlibc.c index ddcb961015..8c9ed2e1a8 100644 --- a/cpukit/libcsupport/src/newlibc.c +++ b/cpukit/libcsupport/src/newlibc.c @@ -1,17 +1,6 @@ -/* - * @(#)newlibc.c 1.9 - 95/05/16 - * - */ - #if defined(RTEMS_NEWLIB) /* - * File: newlibc.c,v - * Project: PixelFlow - * Created: 94/12/7 - * Revision: 1.2 - * Last Mod: 1995/05/09 20:24:37 - * * COPYRIGHT (c) 1994 by Division Incorporated * * To anyone who acknowledges that this file is provided "AS IS" @@ -47,8 +36,25 @@ #include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */ -#ifdef RTEMS_UNIX -#include <stdio.h> /* for setvbuf() */ +/* + * NOTE: When using RTEMS fake stat, fstat, and isatty, all output + * is line buffered so this setvbuf is not necessary. This + * setvbuf insures that we can redirect the output of a test + * on the UNIX simulator and it is in the same order as for a + * real target. + * NOTE: + * There is some problem with doing this on the hpux version + * of the UNIX simulator (symptom is printf core dumps), so + * we just don't for now. + * Not sure if this is a problem with hpux, newlib, or something else. + */ + +#if defined(RTEMS_UNIX) && !defined(hpux) +#define NEED_SETVBUF +#endif + +#ifdef NEED_SETVBUF +#include <stdio.h> #endif #include "internal.h" @@ -196,18 +202,19 @@ libc_delete_hook(rtems_tcb *current_task, if (current_task == deleted_task) { - ptr = _REENT; + ptr = _REENT; } else { - ptr = (struct _reent *) MY_task_get_note(deleted_task, LIBC_NOTEPAD); + ptr = (struct _reent *) MY_task_get_note(deleted_task, LIBC_NOTEPAD); } /* if (ptr) */ if (ptr && ptr != &libc_global_reent) { - _wrapup_reent(ptr); - _reclaim_reent(ptr); + _wrapup_reent(ptr); + _reclaim_reent(ptr); + free(ptr); } MY_task_set_note(deleted_task, LIBC_NOTEPAD, 0); @@ -218,7 +225,7 @@ libc_delete_hook(rtems_tcb *current_task, if (current_task == deleted_task) { - _REENT = 0; + _REENT = 0; } } |