1 |
/* |
2 |
* malloc.h |
3 |
* This file has no copyright assigned and is placed in the Public Domain. |
4 |
* This file is a part of the mingw-runtime package. |
5 |
* No warranty is given; refer to the file DISCLAIMER within the package. |
6 |
* |
7 |
* Support for programs which want to use malloc.h to get memory management |
8 |
* functions. Unless you absolutely need some of these functions and they are |
9 |
* not in the ANSI headers you should use the ANSI standard header files |
10 |
* instead. |
11 |
* |
12 |
*/ |
13 |
|
14 |
#ifndef _MALLOC_H_ |
15 |
#define _MALLOC_H_ |
16 |
|
17 |
/* All the headers include this file. */ |
18 |
#include <_mingw.h> |
19 |
|
20 |
#include <stdlib.h> |
21 |
|
22 |
#ifndef RC_INVOKED |
23 |
|
24 |
/* |
25 |
* The structure used to walk through the heap with _heapwalk. |
26 |
*/ |
27 |
typedef struct _heapinfo |
28 |
{ |
29 |
int* _pentry; |
30 |
size_t _size; |
31 |
int _useflag; |
32 |
} _HEAPINFO; |
33 |
|
34 |
/* Values for _heapinfo.useflag */ |
35 |
#define _FREEENTRY 0 |
36 |
#define _USEDENTRY 1 |
37 |
|
38 |
/* Return codes for _heapwalk() */ |
39 |
#define _HEAPEMPTY (-1) |
40 |
#define _HEAPOK (-2) |
41 |
#define _HEAPBADBEGIN (-3) |
42 |
#define _HEAPBADNODE (-4) |
43 |
#define _HEAPEND (-5) |
44 |
#define _HEAPBADPTR (-6) |
45 |
|
46 |
/* maximum size of a user request for memory */ |
47 |
#define _HEAP_MAXREQ 0xFFFFFFE0 |
48 |
|
49 |
#ifdef __cplusplus |
50 |
extern "C" { |
51 |
#endif |
52 |
/* |
53 |
The _heap* memory allocation functions are supported on NT |
54 |
but not W9x. On latter, they always set errno to ENOSYS. |
55 |
*/ |
56 |
_CRTIMP int __cdecl __MINGW_NOTHROW _heapwalk (_HEAPINFO*); |
57 |
#ifdef __GNUC__ |
58 |
#define _alloca(x) __builtin_alloca((x)) |
59 |
#endif |
60 |
|
61 |
#ifndef _NO_OLDNAMES |
62 |
_CRTIMP int __cdecl __MINGW_NOTHROW heapwalk (_HEAPINFO*); |
63 |
#ifdef __GNUC__ |
64 |
#define alloca(x) __builtin_alloca((x)) |
65 |
#endif |
66 |
#endif /* Not _NO_OLDNAMES */ |
67 |
|
68 |
_CRTIMP int __cdecl __MINGW_NOTHROW _heapchk (void); /* Verify heap integrety. */ |
69 |
_CRTIMP int __cdecl __MINGW_NOTHROW _heapmin (void); /* Return unused heap to the OS. */ |
70 |
_CRTIMP int __cdecl __MINGW_NOTHROW _heapset (unsigned int); |
71 |
|
72 |
_CRTIMP size_t __cdecl __MINGW_NOTHROW _msize (void*); |
73 |
_CRTIMP size_t __cdecl __MINGW_NOTHROW _get_sbh_threshold (void); |
74 |
_CRTIMP int __cdecl __MINGW_NOTHROW _set_sbh_threshold (size_t); |
75 |
_CRTIMP void* __cdecl __MINGW_NOTHROW _expand (void*, size_t); |
76 |
|
77 |
/* These require msvcr70.dll or higher. */ |
78 |
#if __MSVCRT_VERSION__ >= 0x0700 |
79 |
_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_malloc(size_t, size_t, size_t); |
80 |
_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_realloc(void*, size_t, size_t, size_t); |
81 |
_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_offset_recalloc(void*, size_t, size_t, size_t, size_t); |
82 |
|
83 |
_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_malloc (size_t, size_t); |
84 |
_CRTIMP void * __cdecl __MINGW_NOTHROW _aligned_realloc (void*, size_t, size_t); |
85 |
_CRTIMP void* __cdecl __MINGW_NOTHROW _aligned_recalloc(void*, size_t, size_t, size_t); |
86 |
_CRTIMP void __cdecl __MINGW_NOTHROW _aligned_free (void*); |
87 |
#endif /* __MSVCRT_VERSION__ >= 0x0700 */ |
88 |
|
89 |
/* These require libmingwex.a. */ |
90 |
void * __cdecl __MINGW_NOTHROW __mingw_aligned_offset_malloc (size_t, size_t, size_t); |
91 |
void * __cdecl __MINGW_NOTHROW __mingw_aligned_offset_realloc (void*, size_t, size_t, size_t); |
92 |
|
93 |
void * __cdecl __MINGW_NOTHROW __mingw_aligned_malloc (size_t, size_t); |
94 |
void * __cdecl __MINGW_NOTHROW __mingw_aligned_realloc (void*, size_t, size_t); |
95 |
void __cdecl __MINGW_NOTHROW __mingw_aligned_free (void*); |
96 |
|
97 |
#ifdef __cplusplus |
98 |
} |
99 |
#endif |
100 |
|
101 |
#endif /* RC_INVOKED */ |
102 |
|
103 |
#endif /* Not _MALLOC_H_ */ |