mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-22 15:07:43 +08:00
1159e0fd94
* libc/stdio/clearerr.c (clearerr): Ensure CHECK_INIT() is called before _flockfile to prevent lock object use before initialisation. _REENT_SMALL_CHECK_INIT() and CHECK_INIT() take a struct _reent * instead of a FILE *. * libc/stdio/fclose.c (_fclose_r): Ditto. * libc/stdio/feof.c (feof): Ditto. * libc/stdio/ferror.c (ferror): Ditto. * libc/stdio/fflush.c (fflush): Ditto. * libc/stdio/fgetc.c (fgetc): Ditto. * libc/stdio/fgets.c (fgets): Ditto. * libc/stdio/fileno.c (fileno): Ditto. * libc/stdio/fputc.c (fputc): Ditto. * libc/stdio/fputs.c (fputs): Ditto. * libc/stdio/fread.c (fread): Ditto. * libc/stdio/freopen.c (_freopen_r): Ditto. * libc/stdio/fseek.c (_fseek_r): Ditto. * libc/stdio/ftell.c (_ftell_r): Ditto. * libc/stdio/fwrite.c (fwrite): Ditto. * libc/stdio/getc.c (getc): Ditto. * libc/stdio/getdelim.c (__getdelim): Ditto. * libc/stdio/putc.c (putc): Ditto. * libc/stdio/setvbuf.c (setvbuf): Ditto. * libc/stdio/ungetc.c (_ungetc_r): Ditto. * libc/stdio/vfprintf.c (_VFPRINTF_R): Ditto. * libc/stdio64/freopen64.c (_freopen64_r): Ditto. * libc/stdio64/fseeko64.c (_fseeko64_r): Ditto. * libc/stdio64/ftello64.c (_ftello64_r): Ditto. * libc/stdio/local.h (CHECK_INIT): Argument is now a struct _reent * instead of a FILE * and so replace incorrect use of _REENT with argument. * libc/sys/arm/syscalls.c (CHECK_INIT): Ditto. * libc/stdio/getchar.c (getchar): _REENT_SMALL_CHECK_INIT() and CHECK_INIT() take a struct _reent * instead of a FILE *. * libc/stdio/iprintf.c (iprintf, _iprintf_r): Ditto. * libc/stdio/iscanf.c (iscanf, _iscanf_r): Ditto. * libc/stdio/perror.c (perror): Ditto. * libc/stdio/printf.c (printf, _printf_r): Ditto. * libc/stdio/putchar.c (putchar): Ditto. * libc/stdio/puts.c (puts): Ditto. * libc/stdio/refill.c (__srefill): Ditto. * libc/stdio/scanf.c (scanf, _scanf_r): Ditto. * libc/stdio/vfscanf.c (VFSCANF, _VFSCANF_R): Ditto. * libc/stdio/viprintf.c (viprintf, _viprintf_r): Ditto. * libc/stdio/viscanf.c (viscanf, _viscanf_r): Ditto. * libc/stdio/vprintf.c (vprintf, _vprintf_r): Ditto. * libc/stdio/vscanf.c (vscanf, _vscanf_r): Ditto. * libc/stdio/wbuf.c (__swbuf): Ditto. * libc/stdio/wsetup.c (__swsetup): Ditto. * libc/stdlib/mallocr.c (malloc_stats): Ditto. * libc/stdlib/mstats.c (_mstats_r): Ditto. * libc/include/sys/reent.h (_REENT_SMALL_CHECK_INIT): Ditto. * libc/machine/powerpc/vfscanf.c (vfscanf): Ditto. * libc/stdio/fgetpos.c (_fgetpos_r): Removed unnecessary calls to _flockfile and _funlockfile; rely on locking in _ftell_r. * libc/stdio64/fgetpos64.c (_fgetpos64_r): Ditto (_ftello64_r). * libc/machine/powerpc/vfprintf.c (__sbprintf): Removed unnecessary initialision of _data field in FILE structure. * libc/machine/powerpc/vfprintf.c (VFPRINTF): Added CHECK_INIT() call.
161 lines
3.6 KiB
C
161 lines
3.6 KiB
C
/* VxWorks provides its own version of malloc, and we can't use this
|
|
one because VxWorks does not provide sbrk. So we have a hook to
|
|
not compile this code. */
|
|
|
|
#ifdef MALLOC_PROVIDED
|
|
|
|
int _dummy_mstats = 1;
|
|
|
|
#else
|
|
|
|
/*
|
|
FUNCTION
|
|
<<mallinfo>>, <<malloc_stats>>, <<mallopt>>--malloc support
|
|
|
|
INDEX
|
|
mallinfo
|
|
INDEX
|
|
malloc_stats
|
|
INDEX
|
|
mallopt
|
|
INDEX
|
|
_mallinfo_r
|
|
INDEX
|
|
_malloc_stats_r
|
|
INDEX
|
|
_mallopt_r
|
|
|
|
ANSI_SYNOPSIS
|
|
#include <malloc.h>
|
|
struct mallinfo mallinfo(void);
|
|
void malloc_stats(void);
|
|
int mallopt(int <[parameter]>, <[value]>);
|
|
|
|
struct mallinfo _mallinfo_r(void *<[reent]>);
|
|
void _malloc_stats_r(void *<[reent]>);
|
|
int _mallopt_r(void *<[reent]>, int <[parameter]>, <[value]>);
|
|
|
|
TRAD_SYNOPSIS
|
|
#include <malloc.h>
|
|
struct mallinfo mallinfo();
|
|
|
|
void malloc_stats();
|
|
|
|
int mallopt(<[parameter]>, <[value]>)
|
|
int <[parameter]>;
|
|
int <[value]>;
|
|
|
|
struct mallinfo _mallinfo_r(<[reent]>);
|
|
char *<[reent]>;
|
|
|
|
void _malloc_stats_r(<[reent]>);
|
|
char *<[reent]>;
|
|
|
|
int _mallopt_r(<[reent]>, <[parameter]>, <[value]>)
|
|
char *<[reent]>;
|
|
int <[parameter]>;
|
|
int <[value]>;
|
|
|
|
DESCRIPTION
|
|
<<mallinfo>> returns a structure describing the current state of
|
|
memory allocation. The structure is defined in malloc.h. The
|
|
following fields are defined: <<arena>> is the total amount of space
|
|
in the heap; <<ordblks>> is the number of chunks which are not in use;
|
|
<<uordblks>> is the total amount of space allocated by <<malloc>>;
|
|
<<fordblks>> is the total amount of space not in use; <<keepcost>> is
|
|
the size of the top most memory block.
|
|
|
|
<<malloc_stats>> print some statistics about memory allocation on
|
|
standard error.
|
|
|
|
<<mallopt>> takes a parameter and a value. The parameters are defined
|
|
in malloc.h, and may be one of the following: <<M_TRIM_THRESHOLD>>
|
|
sets the maximum amount of unused space in the top most block before
|
|
releasing it back to the system in <<free>> (the space is released by
|
|
calling <<_sbrk_r>> with a negative argument); <<M_TOP_PAD>> is the
|
|
amount of padding to allocate whenever <<_sbrk_r>> is called to
|
|
allocate more space.
|
|
|
|
The alternate functions <<_mallinfo_r>>, <<_malloc_stats_r>>, and
|
|
<<_mallopt_r>> are reentrant versions. The extra argument <[reent]>
|
|
is a pointer to a reentrancy structure.
|
|
|
|
RETURNS
|
|
<<mallinfo>> returns a mallinfo structure. The structure is defined
|
|
in malloc.h.
|
|
|
|
<<malloc_stats>> does not return a result.
|
|
|
|
<<mallopt>> returns zero if the parameter could not be set, or
|
|
non-zero if it could be set.
|
|
|
|
PORTABILITY
|
|
<<mallinfo>> and <<mallopt>> are provided by SVR4, but <<mallopt>>
|
|
takes different parameters on different systems. <<malloc_stats>> is
|
|
not portable.
|
|
|
|
*/
|
|
|
|
#include <_ansi.h>
|
|
#include <reent.h>
|
|
#include <stdlib.h>
|
|
#include <malloc.h>
|
|
#include <stdio.h>
|
|
|
|
#ifndef _REENT_ONLY
|
|
|
|
struct mallinfo
|
|
_DEFUN_VOID (mallinfo)
|
|
{
|
|
return _mallinfo_r (_REENT);
|
|
}
|
|
|
|
#if !defined (_ELIX_LEVEL) || _ELIX_LEVEL >= 2
|
|
void
|
|
_DEFUN_VOID (malloc_stats)
|
|
{
|
|
_malloc_stats_r (_REENT);
|
|
}
|
|
|
|
int
|
|
_DEFUN (mallopt, (p, v),
|
|
int p _AND
|
|
int v)
|
|
{
|
|
return _mallopt_r (_REENT, p, v);
|
|
}
|
|
|
|
#endif /* !_ELIX_LEVEL || _ELIX_LEVEL >= 2 */
|
|
|
|
#endif
|
|
|
|
#if !defined (_ELIX_LEVEL) || _ELIX_LEVEL >= 2
|
|
|
|
/* mstats is now compatibility code. It used to be real, for a
|
|
previous version of the malloc routines. It now just calls
|
|
malloc_stats. */
|
|
|
|
void
|
|
_DEFUN (_mstats_r, (ptr, s),
|
|
struct _reent *ptr _AND
|
|
char *s)
|
|
{
|
|
_REENT_SMALL_CHECK_INIT(ptr);
|
|
fiprintf (_stderr_r (ptr), "Memory allocation statistics %s\n", s);
|
|
_malloc_stats_r (ptr);
|
|
}
|
|
|
|
#ifndef _REENT_ONLY
|
|
void
|
|
_DEFUN (mstats, (s),
|
|
char *s)
|
|
{
|
|
_mstats_r (_REENT, s);
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* !_ELIX_LEVEL || _ELIX_LEVEL >= 2 */
|
|
|
|
#endif /* ! defined (MALLOC_PROVIDED) */
|