1/* malloc.h -- header file for memory routines. */ 2 3#ifndef _INCLUDE_MALLOC_H_ 4#define _INCLUDE_MALLOC_H_ 5 6#include <_ansi.h> 7#include <sys/reent.h> 8 9#define __need_size_t 10#include <stddef.h> 11 12/* include any machine-specific extensions */ 13#include <machine/malloc.h> 14 15#ifdef __cplusplus 16extern "C" { 17#endif 18 19/* This version of struct mallinfo must match the one in 20 libc/stdlib/mallocr.c. */ 21 22struct mallinfo { 23 int arena; /* total space allocated from system */ 24 int ordblks; /* number of non-inuse chunks */ 25 int smblks; /* unused -- always zero */ 26 int hblks; /* number of mmapped regions */ 27 int hblkhd; /* total space in mmapped regions */ 28 int usmblks; /* unused -- always zero */ 29 int fsmblks; /* unused -- always zero */ 30 int uordblks; /* total allocated space */ 31 int fordblks; /* total non-inuse space */ 32 int keepcost; /* top-most, releasable (via malloc_trim) space */ 33}; 34 35/* The routines. */ 36 37extern _PTR malloc _PARAMS ((size_t)); 38#ifdef __CYGWIN__ 39#undef _malloc_r 40#define _malloc_r(r, s) malloc (s) 41#else 42extern _PTR _malloc_r _PARAMS ((struct _reent *, size_t)); 43#endif 44 45extern _VOID free _PARAMS ((_PTR)); 46#ifdef __CYGWIN__ 47#undef _free_r 48#define _free_r(r, p) free (p) 49#else 50extern _VOID _free_r _PARAMS ((struct _reent *, _PTR)); 51#endif 52 53extern _PTR realloc _PARAMS ((_PTR, size_t)); 54#ifdef __CYGWIN__ 55#undef _realloc_r 56#define _realloc_r(r, p, s) realloc (p, s) 57#else 58extern _PTR _realloc_r _PARAMS ((struct _reent *, _PTR, size_t)); 59#endif 60 61extern _PTR calloc _PARAMS ((size_t, size_t)); 62#ifdef __CYGWIN__ 63#undef _calloc_r 64#define _calloc_r(r, s1, s2) calloc (s1, s2); 65#else 66extern _PTR _calloc_r _PARAMS ((struct _reent *, size_t, size_t)); 67#endif 68 69extern _PTR memalign _PARAMS ((size_t, size_t)); 70#ifdef __CYGWIN__ 71#undef _memalign_r 72#define _memalign_r(r, s1, s2) memalign (s1, s2); 73#else 74extern _PTR _memalign_r _PARAMS ((struct _reent *, size_t, size_t)); 75#endif 76 77extern struct mallinfo mallinfo _PARAMS ((void)); 78#ifdef __CYGWIN__ 79#undef _mallinfo_r 80#define _mallinfo_r(r) mallinfo () 81#else 82extern struct mallinfo _mallinfo_r _PARAMS ((struct _reent *)); 83#endif 84 85extern void malloc_stats _PARAMS ((void)); 86#ifdef __CYGWIN__ 87#undef _malloc_stats_r 88#define _malloc_stats_r(r) malloc_stats () 89#else 90extern void _malloc_stats_r _PARAMS ((struct _reent *)); 91#endif 92 93extern int mallopt _PARAMS ((int, int)); 94#ifdef __CYGWIN__ 95#undef _mallopt_r 96#define _mallopt_r(i1, i2) mallopt (i1, i2) 97#else 98extern int _mallopt_r _PARAMS ((struct _reent *, int, int)); 99#endif 100 101extern size_t malloc_usable_size _PARAMS ((_PTR)); 102#ifdef __CYGWIN__ 103#undef _malloc_usable_size_r 104#define _malloc_usable_size_r(r, p) malloc_usable_size (p) 105#else 106extern size_t _malloc_usable_size_r _PARAMS ((struct _reent *, _PTR)); 107#endif 108 109/* These aren't too useful on an embedded system, but we define them 110 anyhow. */ 111 112extern _PTR valloc _PARAMS ((size_t)); 113#ifdef __CYGWIN__ 114#undef _valloc_r 115#define _valloc_r(r, s) valloc (s) 116#else 117extern _PTR _valloc_r _PARAMS ((struct _reent *, size_t)); 118#endif 119 120extern _PTR pvalloc _PARAMS ((size_t)); 121#ifdef __CYGWIN__ 122#undef _pvalloc_r 123#define _pvalloc_r(r, s) pvalloc (s) 124#else 125extern _PTR _pvalloc_r _PARAMS ((struct _reent *, size_t)); 126#endif 127 128extern int malloc_trim _PARAMS ((size_t)); 129#ifdef __CYGWIN__ 130#undef _malloc_trim_r 131#define _malloc_trim_r(r, s) malloc_trim (s) 132#else 133extern int _malloc_trim_r _PARAMS ((struct _reent *, size_t)); 134#endif 135 136/* A compatibility routine for an earlier version of the allocator. */ 137 138extern _VOID mstats _PARAMS ((char *)); 139#ifdef __CYGWIN__ 140#undef _mstats_r 141#define _mstats_r(r, p) mstats (p) 142#else 143extern _VOID _mstats_r _PARAMS ((struct _reent *, char *)); 144#endif 145 146/* SVID2/XPG mallopt options */ 147 148#define M_MXFAST 1 /* UNUSED in this malloc */ 149#define M_NLBLKS 2 /* UNUSED in this malloc */ 150#define M_GRAIN 3 /* UNUSED in this malloc */ 151#define M_KEEP 4 /* UNUSED in this malloc */ 152 153/* mallopt options that actually do something */ 154 155#define M_TRIM_THRESHOLD -1 156#define M_TOP_PAD -2 157#define M_MMAP_THRESHOLD -3 158#define M_MMAP_MAX -4 159 160#ifndef __CYGWIN__ 161/* Some systems provide this, so do too for compatibility. */ 162extern void cfree _PARAMS ((_PTR)); 163#endif /* __CYGWIN__ */ 164 165#ifdef __cplusplus 166} 167#endif 168 169#endif /* _INCLUDE_MALLOC_H_ */ 170