source: trunk/libs/newlib/src/newlib/libc/include/malloc.h

Last change on this file was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 4.0 KB
Line 
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  size_t arena;    /* total space allocated from system */
24  size_t ordblks;  /* number of non-inuse chunks */
25  size_t smblks;   /* unused -- always zero */
26  size_t hblks;    /* number of mmapped regions */
27  size_t hblkhd;   /* total space in mmapped regions */
28  size_t usmblks;  /* unused -- always zero */
29  size_t fsmblks;  /* unused -- always zero */
30  size_t uordblks; /* total allocated space */
31  size_t fordblks; /* total non-inuse space */
32  size_t keepcost; /* top-most, releasable (via malloc_trim) space */
33};     
34
35/* The routines.  */
36
37extern void *malloc (size_t);
38#ifdef __CYGWIN__
39#undef _malloc_r
40#define _malloc_r(r, s) malloc (s)
41#else
42extern void *_malloc_r (struct _reent *, size_t);
43#endif
44
45extern void free (void *);
46#ifdef __CYGWIN__
47#undef _free_r
48#define _free_r(r, p) free (p)
49#else
50extern void _free_r (struct _reent *, void *);
51#endif
52
53extern void *realloc (void *, size_t);
54#ifdef __CYGWIN__
55#undef _realloc_r
56#define _realloc_r(r, p, s) realloc (p, s)
57#else
58extern void *_realloc_r (struct _reent *, void *, size_t);
59#endif
60
61extern void *calloc (size_t, size_t);
62#ifdef __CYGWIN__
63#undef _calloc_r
64#define _calloc_r(r, s1, s2) calloc (s1, s2);
65#else
66extern void *_calloc_r (struct _reent *, size_t, size_t);
67#endif
68
69extern void *memalign (size_t, size_t);
70#ifdef __CYGWIN__
71#undef _memalign_r
72#define _memalign_r(r, s1, s2) memalign (s1, s2);
73#else
74extern void *_memalign_r (struct _reent *, size_t, size_t);
75#endif
76
77extern struct mallinfo mallinfo (void);
78#ifdef __CYGWIN__
79#undef _mallinfo_r
80#define _mallinfo_r(r) mallinfo ()
81#else
82extern struct mallinfo _mallinfo_r (struct _reent *);
83#endif
84
85extern void malloc_stats (void);
86#ifdef __CYGWIN__
87#undef _malloc_stats_r
88#define _malloc_stats_r(r) malloc_stats ()
89#else
90extern void _malloc_stats_r (struct _reent *);
91#endif
92
93extern int mallopt (int, int);
94#ifdef __CYGWIN__
95#undef _mallopt_r
96#define _mallopt_r(i1, i2) mallopt (i1, i2)
97#else
98extern int _mallopt_r (struct _reent *, int, int);
99#endif
100
101extern size_t malloc_usable_size (void *);
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 (struct _reent *, void *);
107#endif
108
109/* These aren't too useful on an embedded system, but we define them
110   anyhow.  */
111
112extern void *valloc (size_t);
113#ifdef __CYGWIN__
114#undef _valloc_r
115#define _valloc_r(r, s) valloc (s)
116#else
117extern void *_valloc_r (struct _reent *, size_t);
118#endif
119
120extern void *pvalloc (size_t);
121#ifdef __CYGWIN__
122#undef _pvalloc_r
123#define _pvalloc_r(r, s) pvalloc (s)
124#else
125extern void *_pvalloc_r (struct _reent *, size_t);
126#endif
127
128extern int malloc_trim (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 (struct _reent *, size_t);
134#endif
135
136/* A compatibility routine for an earlier version of the allocator.  */
137
138extern void mstats (char *);
139#ifdef __CYGWIN__
140#undef _mstats_r
141#define _mstats_r(r, p) mstats (p)
142#else
143extern void _mstats_r (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 (void *);
163#endif /* __CYGWIN__ */
164
165#ifdef __cplusplus
166}
167#endif
168
169#endif /* _INCLUDE_MALLOC_H_ */
Note: See TracBrowser for help on using the repository browser.