libc/newlib/libc/stdlib/mstats.c

137 lines
3.1 KiB
C
Raw Normal View History

2000-02-17 20:39:52 +01:00
/* 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
2005-10-28 Bob Wilson <bob.wilson@acm.org> * libc/misc/unctrl.c: Replace FUNCTION description. * libc/signal/signal.c: Remove documentation for raise and _raise_r. * libc/stdio/getdelim.c: Fix spelling errors. * libc/stdio/getw.c: Put RETURNS on a separate line. Fix punctuation. * libc/stdio/putw.c: Likewise. * libc/stdlib/a64l.c: Fix formatting, spelling and punctuation in documentation. * libc/stdlib/assert.c: Do not capitalize FUNCTION description. * libc/stdlib/efgcvt.c: Add spaces to FUNCTION description. * libc/stdlib/envlock.c: Use em-dash in FUNCTION description. * libc/stdlib/mlock.c: Likewise. * libc/stdlib/mstats.c: Likewise. * libc/time/tzlock.c: Likewise. * libc/stdlib/rand.c: Use "multi-threaded" and "thread-safe" in NOTES. * libc/stdlib/rand48.c: Remove extra space in FUNCTION description and hyphenate "pseudo-random". * libc/string/bcmp.c: Remove extra blank lines in documentation. * libc/string/strncat.c: Likewise. * libc/string/memchr.c: Remove extra ">" character in documentation. * libc/string/strcspn.c: Use "characters" instead of "chars". * libc/string/strpbrk.c: Likewise. * libc/string/strerror_r.c: Capitalize "GNU". * libc/string/strnlen.c: Likewise. * libc/string/strtok.c: Fix formatting, spelling and punctuation in documentation. Use "multi-threaded" and "thread-safe" in NOTES. * libc/string/wcscat.c: Split PORTABILITY into two paragraphs. * libc/string/wcschr.c: Likewise. * libc/string/wcscmp.c: Likewise. * libc/string/wcscpy.c: Likewise. * libc/string/wcscspn.c: Likewise. * libc/string/wcslen.c: Likewise. * libc/string/wcsncat.c: Likewise. * libc/string/wcsncmp.c: Likewise. * libc/string/wcsncpy.c: Likewise. * libc/string/wcsnlen.c: Likewise. * libc/string/wcspbrk.c: Likewise. * libc/string/wcsrchr.c: Likewise. * libc/string/wcsspn.c: Likewise. * libc/string/wmemchr.c: Likewise. * libc/string/wmemcmp.c: Likewise. * libc/string/wmemcpy.c: Likewise. * libc/string/wmemset.c: Likewise. * libc/string/wmemmove.c: Likewise. Also fix FUNCTION description. * libc/string/wcswidth.c: Formatting and punctuation in documentation. * libc/string/wcwidth.c: Likewise. * libm/common/s_modf.c: Remove extra period from documentation. * libm/math/s_isnan.c: Fix formatting, grammar and punctuation in documentation. * libm/mathfp/s_isnan.c: Likewise. * libm/math/s_ldexp.c: Fix punctuation. * libm/mathfp/s_ldexp.c: Likewise. * libm/math/w_log.c: Likewise. * libm/mathfp/s_logarithm.c: Likewise. * libm/math/w_j0.c: Add spaces to FUNCTION description. * libm/mathfp/w_jn.c: Likewise.
2005-10-28 23:21:08 +02:00
<<mallinfo>>, <<malloc_stats>>, <<mallopt>>---malloc support
2000-02-17 20:39:52 +01:00
INDEX
mallinfo
INDEX
malloc_stats
INDEX
mallopt
INDEX
_mallinfo_r
INDEX
_malloc_stats_r
INDEX
_mallopt_r
SYNOPSIS
2000-02-17 20:39:52 +01:00
#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]>);
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
mallinfo (void)
2000-02-17 20:39:52 +01:00
{
return _mallinfo_r (_REENT);
}
#if !defined (_ELIX_LEVEL) || _ELIX_LEVEL >= 2
2000-02-17 20:39:52 +01:00
void
malloc_stats (void)
2000-02-17 20:39:52 +01:00
{
_malloc_stats_r (_REENT);
}
int
mallopt (int p,
2000-02-17 20:39:52 +01:00
int v)
{
return _mallopt_r (_REENT, p, v);
}
2002-08-26 Jeff Johnston <jjohnstn@redhat.com> * Makefile.am(LIBC_OBJECTLISTS): Add STDIO64_OBJECTLIST. * Makefile.in: Regenerated. * acinclude.m4: Add support for --enable-newlib-elix-level option. * aclocal.m4: Regenerated. * configure: Ditto. * configure.host: Add code to define _ELIX_LEVEL if --enable-newlib-elix-level option is used. * configure.in: * libc/aclocal.m4: Regenerated. * libc/configure: Ditto. * libc/argz/Makefile.am: Add EL/IX level checking. * libc/argz/Makefile.in: Regenerated. * libc/argz/dummy.c: New file. * libc/ctype/Makefile.am: Add EL/IX level checking. * libc/ctype/Makefile.in: Regenerated. * libc/locale/Makefile.am: Add EL/IX level checking. * libc/locale/Makefile.in: Regenerated. * libc/posix/Makefile.am: Add EL/IX level checking. * libc/posix/Makefile.in: Regenerated. * libc/posix/telldir.c: Add EL/IX level checking. * libc/reent/Makefile.am: Ditto. * libc/reent/fstat64r.c: Ditto. * libc/reent/lseek64r.c: Ditto. * libc/reent/open64r.c: Ditto. * libc/reent/Makefile.in: Regenerated. * libc/search/Makefile.am: Add EL/IX level checking. * libc/search/Makefile.in: Regenerated. * libc/stdio/Makefile.am: Add EL/IX level checking. * libc/stdio/Makefile.in: Regenerated. * libc/stdio64/Makefile.am: Add EL/IX level checking. * libc/stdio64/Makefile.in: Regenerated. * libc/stdio64/dummy.c: New file. * libc/stdio64/fgetpos64.c: Fix so _LARGEFILE_64 macro is checked after first include. * libc/stdio64/fopen64.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/fsetpos64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/stdio64/tmpfile64.c: Ditto. * libc/stdlib/Makefile.am: Add EL/IX level checking. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/mstats.c: Add EL/IX level checking. * libc/string/Makefile.am: Ditto. * libc/string/Makefile.in: Regenerated. * libc/sys/linux/Makefile.am: Add EL/IX level checking. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/aio.c: Add EL/IX level checking. * libc/sys/linux/ftok.c: Ditto. * libc/sys/linux/getdate.c: Ditto. * libc/sys/linux/ids.c: Ditto. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/io.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/resource.c: Ditto. * libc/sys/linux/sched.c: Ditto. * libc/sys/linux/sig.c: Ditto. * libc/sys/linux/termios.c: Ditto. * libc/sys/linux/wait.c: Ditto plus add __waitpid and __libc___waitpid weak aliases. * libc/sys/linux/machine/i386/syscall.h: Add new _base macros that generate the code for a syscall, but do not create a weak alias. * libc/syscalls/Makefile.am: Add EL/IX level checking. * libc/syscalls/Makefile.in: Regenerated. * libc/time/tzset_r.c: Change to replace strdup with equivalent functionality. * libc/unix/Makefile.am: Add EL/IX level checking. * libc/unix/Makefile.in: Regenerated.
2002-08-26 20:56:09 +02:00
#endif /* !_ELIX_LEVEL || _ELIX_LEVEL >= 2 */
2000-02-17 20:39:52 +01:00
#endif
#if !defined (_ELIX_LEVEL) || _ELIX_LEVEL >= 2
2002-08-26 Jeff Johnston <jjohnstn@redhat.com> * Makefile.am(LIBC_OBJECTLISTS): Add STDIO64_OBJECTLIST. * Makefile.in: Regenerated. * acinclude.m4: Add support for --enable-newlib-elix-level option. * aclocal.m4: Regenerated. * configure: Ditto. * configure.host: Add code to define _ELIX_LEVEL if --enable-newlib-elix-level option is used. * configure.in: * libc/aclocal.m4: Regenerated. * libc/configure: Ditto. * libc/argz/Makefile.am: Add EL/IX level checking. * libc/argz/Makefile.in: Regenerated. * libc/argz/dummy.c: New file. * libc/ctype/Makefile.am: Add EL/IX level checking. * libc/ctype/Makefile.in: Regenerated. * libc/locale/Makefile.am: Add EL/IX level checking. * libc/locale/Makefile.in: Regenerated. * libc/posix/Makefile.am: Add EL/IX level checking. * libc/posix/Makefile.in: Regenerated. * libc/posix/telldir.c: Add EL/IX level checking. * libc/reent/Makefile.am: Ditto. * libc/reent/fstat64r.c: Ditto. * libc/reent/lseek64r.c: Ditto. * libc/reent/open64r.c: Ditto. * libc/reent/Makefile.in: Regenerated. * libc/search/Makefile.am: Add EL/IX level checking. * libc/search/Makefile.in: Regenerated. * libc/stdio/Makefile.am: Add EL/IX level checking. * libc/stdio/Makefile.in: Regenerated. * libc/stdio64/Makefile.am: Add EL/IX level checking. * libc/stdio64/Makefile.in: Regenerated. * libc/stdio64/dummy.c: New file. * libc/stdio64/fgetpos64.c: Fix so _LARGEFILE_64 macro is checked after first include. * libc/stdio64/fopen64.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/fsetpos64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/stdio64/tmpfile64.c: Ditto. * libc/stdlib/Makefile.am: Add EL/IX level checking. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/mstats.c: Add EL/IX level checking. * libc/string/Makefile.am: Ditto. * libc/string/Makefile.in: Regenerated. * libc/sys/linux/Makefile.am: Add EL/IX level checking. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/aio.c: Add EL/IX level checking. * libc/sys/linux/ftok.c: Ditto. * libc/sys/linux/getdate.c: Ditto. * libc/sys/linux/ids.c: Ditto. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/io.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/resource.c: Ditto. * libc/sys/linux/sched.c: Ditto. * libc/sys/linux/sig.c: Ditto. * libc/sys/linux/termios.c: Ditto. * libc/sys/linux/wait.c: Ditto plus add __waitpid and __libc___waitpid weak aliases. * libc/sys/linux/machine/i386/syscall.h: Add new _base macros that generate the code for a syscall, but do not create a weak alias. * libc/syscalls/Makefile.am: Add EL/IX level checking. * libc/syscalls/Makefile.in: Regenerated. * libc/time/tzset_r.c: Change to replace strdup with equivalent functionality. * libc/unix/Makefile.am: Add EL/IX level checking. * libc/unix/Makefile.in: Regenerated.
2002-08-26 20:56:09 +02:00
2000-02-17 20:39:52 +01:00
/* 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
_mstats_r (struct _reent *ptr,
2000-02-17 20:39:52 +01:00
char *s)
{
2005-02-07 Antony King <antony.king@st.com> * 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.
2005-02-08 02:33:19 +01:00
_REENT_SMALL_CHECK_INIT(ptr);
2000-02-17 20:39:52 +01:00
fiprintf (_stderr_r (ptr), "Memory allocation statistics %s\n", s);
_malloc_stats_r (ptr);
}
#ifndef _REENT_ONLY
void
mstats (char *s)
2000-02-17 20:39:52 +01:00
{
_mstats_r (_REENT, s);
}
#endif
2002-08-26 Jeff Johnston <jjohnstn@redhat.com> * Makefile.am(LIBC_OBJECTLISTS): Add STDIO64_OBJECTLIST. * Makefile.in: Regenerated. * acinclude.m4: Add support for --enable-newlib-elix-level option. * aclocal.m4: Regenerated. * configure: Ditto. * configure.host: Add code to define _ELIX_LEVEL if --enable-newlib-elix-level option is used. * configure.in: * libc/aclocal.m4: Regenerated. * libc/configure: Ditto. * libc/argz/Makefile.am: Add EL/IX level checking. * libc/argz/Makefile.in: Regenerated. * libc/argz/dummy.c: New file. * libc/ctype/Makefile.am: Add EL/IX level checking. * libc/ctype/Makefile.in: Regenerated. * libc/locale/Makefile.am: Add EL/IX level checking. * libc/locale/Makefile.in: Regenerated. * libc/posix/Makefile.am: Add EL/IX level checking. * libc/posix/Makefile.in: Regenerated. * libc/posix/telldir.c: Add EL/IX level checking. * libc/reent/Makefile.am: Ditto. * libc/reent/fstat64r.c: Ditto. * libc/reent/lseek64r.c: Ditto. * libc/reent/open64r.c: Ditto. * libc/reent/Makefile.in: Regenerated. * libc/search/Makefile.am: Add EL/IX level checking. * libc/search/Makefile.in: Regenerated. * libc/stdio/Makefile.am: Add EL/IX level checking. * libc/stdio/Makefile.in: Regenerated. * libc/stdio64/Makefile.am: Add EL/IX level checking. * libc/stdio64/Makefile.in: Regenerated. * libc/stdio64/dummy.c: New file. * libc/stdio64/fgetpos64.c: Fix so _LARGEFILE_64 macro is checked after first include. * libc/stdio64/fopen64.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/fsetpos64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/stdio64/tmpfile64.c: Ditto. * libc/stdlib/Makefile.am: Add EL/IX level checking. * libc/stdlib/Makefile.in: Regenerated. * libc/stdlib/mstats.c: Add EL/IX level checking. * libc/string/Makefile.am: Ditto. * libc/string/Makefile.in: Regenerated. * libc/sys/linux/Makefile.am: Add EL/IX level checking. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/aio.c: Add EL/IX level checking. * libc/sys/linux/ftok.c: Ditto. * libc/sys/linux/getdate.c: Ditto. * libc/sys/linux/ids.c: Ditto. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/io.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/resource.c: Ditto. * libc/sys/linux/sched.c: Ditto. * libc/sys/linux/sig.c: Ditto. * libc/sys/linux/termios.c: Ditto. * libc/sys/linux/wait.c: Ditto plus add __waitpid and __libc___waitpid weak aliases. * libc/sys/linux/machine/i386/syscall.h: Add new _base macros that generate the code for a syscall, but do not create a weak alias. * libc/syscalls/Makefile.am: Add EL/IX level checking. * libc/syscalls/Makefile.in: Regenerated. * libc/time/tzset_r.c: Change to replace strdup with equivalent functionality. * libc/unix/Makefile.am: Add EL/IX level checking. * libc/unix/Makefile.in: Regenerated.
2002-08-26 20:56:09 +02:00
#endif /* !_ELIX_LEVEL || _ELIX_LEVEL >= 2 */
2000-02-17 20:39:52 +01:00
#endif /* ! defined (MALLOC_PROVIDED) */