From 8a0efa53e44919bcf5ccb1d3353618a82afdf8bc Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 17 Feb 2000 19:39:52 +0000 Subject: import newlib-2000-02-17 snapshot --- newlib/libc/stdlib/mstats.c | 151 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 newlib/libc/stdlib/mstats.c (limited to 'newlib/libc/stdlib/mstats.c') diff --git a/newlib/libc/stdlib/mstats.c b/newlib/libc/stdlib/mstats.c new file mode 100644 index 000000000..c1628957a --- /dev/null +++ b/newlib/libc/stdlib/mstats.c @@ -0,0 +1,151 @@ +/* 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 +<>, <>, <>--malloc support + +INDEX + mallinfo +INDEX + malloc_stats +INDEX + mallopt +INDEX + _mallinfo_r +INDEX + _malloc_stats_r +INDEX + _mallopt_r + +ANSI_SYNOPSIS + #include + 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 + 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 +<> returns a structure describing the current state of +memory allocation. The structure is defined in malloc.h. The +following fields are defined: <> is the total amount of space +in the heap; <> is the number of chunks which are not in use; +<> is the total amount of space allocated by <>; +<> is the total amount of space not in use; <> is +the size of the top most memory block. + +<> print some statistics about memory allocation on +standard error. + +<> takes a parameter and a value. The parameters are defined +in malloc.h, and may be one of the following: <> +sets the maximum amount of unused space in the top most block before +releasing it back to the system in <> (the space is released by +calling <<_sbrk_r>> with a negative argument); <> 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 +<> returns a mallinfo structure. The structure is defined +in malloc.h. + +<> does not return a result. + +<> returns zero if the parameter could not be set, or +non-zero if it could be set. + +PORTABILITY +<> and <> are provided by SVR4, but <> +takes different parameters on different systems. <> is +not portable. + +*/ + +#include <_ansi.h> +#include +#include +#include +#include + +#ifndef _REENT_ONLY + +struct mallinfo +_DEFUN_VOID (mallinfo) +{ + return _mallinfo_r (_REENT); +} + +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 + +/* 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) +{ + 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 /* ! defined (MALLOC_PROVIDED) */ -- cgit v1.2.3