Remove __sglue member for one configuration
Remove __sglue member of struct reent when _REENT_GLOBAL_STDIO_STREAMS is defined.
This commit is contained in:
parent
8b96542ed1
commit
0a862d1319
|
@ -696,19 +696,19 @@ struct _reent
|
|||
/* These are here last so that __FILE can grow without changing the offsets
|
||||
of the above members (on the off chance that future binary compatibility
|
||||
would be broken otherwise). */
|
||||
struct _glue __sglue; /* root of glue chain */
|
||||
# ifndef _REENT_GLOBAL_STDIO_STREAMS
|
||||
struct _glue __sglue; /* root of glue chain */
|
||||
__FILE __sf[3]; /* first three file descriptors */
|
||||
# endif
|
||||
};
|
||||
|
||||
#ifdef _REENT_GLOBAL_STDIO_STREAMS
|
||||
#define _REENT_STDIO_STREAM(var, index) &__sf[index]
|
||||
#define _REENT_INIT_SGLUE(_ptr) { _NULL, 0, _NULL }
|
||||
#define _REENT_INIT_SGLUE(_ptr) /* nothing to initialize */
|
||||
#define _REENT_INIT_SGLUE_ZEROED(_ptr) /* nothing to set */
|
||||
#else
|
||||
#define _REENT_STDIO_STREAM(var, index) &(var)->__sf[index]
|
||||
#define _REENT_INIT_SGLUE(_ptr) { _NULL, 3, &(_ptr)->__sf[0] }
|
||||
#define _REENT_INIT_SGLUE(_ptr) , { _NULL, 3, &(_ptr)->__sf[0] }
|
||||
#define _REENT_INIT_SGLUE_ZEROED(_ptr) \
|
||||
(_ptr)->__sglue._niobs = 3; \
|
||||
(_ptr)->__sglue._iobs = &(_ptr)->__sf[0];
|
||||
|
@ -758,7 +758,7 @@ struct _reent
|
|||
} \
|
||||
}, \
|
||||
_REENT_INIT_ATEXIT \
|
||||
_NULL, \
|
||||
_NULL \
|
||||
_REENT_INIT_SGLUE(&(var)) \
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ int errno;
|
|||
|
||||
#endif
|
||||
|
||||
#ifndef _REENT_GLOBAL_STDIO_STREAMS
|
||||
/* Interim cleanup code */
|
||||
|
||||
void
|
||||
|
@ -39,6 +40,7 @@ cleanup_glue (struct _reent *ptr,
|
|||
|
||||
_free_r (ptr, glue);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
_reclaim_reent (struct _reent *ptr)
|
||||
|
@ -124,8 +126,10 @@ _reclaim_reent (struct _reent *ptr)
|
|||
before the program exits, and who wants to wait for that? */
|
||||
ptr->__cleanup (ptr);
|
||||
|
||||
#ifndef _REENT_GLOBAL_STDIO_STREAMS
|
||||
if (ptr->__sglue._next)
|
||||
cleanup_glue (ptr, ptr->__sglue._next);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Malloc memory not reclaimed; no good way to return memory anyway. */
|
||||
|
|
|
@ -59,7 +59,12 @@ Required OS subroutines: <<close>>, <<fstat>>, <<isatty>>, <<lseek>>,
|
|||
int
|
||||
_fcloseall_r (struct _reent *ptr)
|
||||
{
|
||||
#ifdef _REENT_GLOBAL_STDIO_STREAMS
|
||||
/* There are no thread-specific FILE objects */
|
||||
return 0;
|
||||
#else
|
||||
return _fwalk_sglue (ptr, _fclose_r, &ptr->__sglue);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
|
|
|
@ -242,8 +242,9 @@ cleanup_stdio (struct _reent *ptr)
|
|||
CLEANUP_FILE (ptr, ptr->_stdout);
|
||||
if (ptr->_stderr != &__sf[2])
|
||||
CLEANUP_FILE (ptr, ptr->_stderr);
|
||||
#endif
|
||||
#else
|
||||
(void) _fwalk_sglue (ptr, CLEANUP_FILE, &ptr->__sglue);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -326,21 +327,27 @@ __fp_unlock (struct _reent * ptr __unused, FILE * fp)
|
|||
void
|
||||
__fp_lock_all (void)
|
||||
{
|
||||
#ifndef _REENT_GLOBAL_STDIO_STREAMS
|
||||
struct _reent *ptr;
|
||||
#endif
|
||||
|
||||
__sfp_lock_acquire ();
|
||||
|
||||
#ifndef _REENT_GLOBAL_STDIO_STREAMS
|
||||
ptr = _REENT;
|
||||
(void) _fwalk_sglue (ptr, __fp_lock, &ptr->__sglue);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
__fp_unlock_all (void)
|
||||
{
|
||||
#ifndef _REENT_GLOBAL_STDIO_STREAMS
|
||||
struct _reent *ptr;
|
||||
|
||||
ptr = _REENT;
|
||||
(void) _fwalk_sglue (ptr, __fp_unlock, &ptr->__sglue);
|
||||
#endif
|
||||
|
||||
__sfp_lock_release ();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue