source: git/omalloc/omAlloc.h @ ba6f0c

spielwiese
Last change on this file since ba6f0c was ba6f0c, checked in by Olaf Bachmann <obachman@…>, 24 years ago
as we go along git-svn-id: file:///usr/local/Singular/svn/trunk@3930 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 31.5 KB
Line 
1/*******************************************************************
2 *  File:    omAlloc.h
3 *  Purpose: declaration of public routines for omalloc 
4 *  Author:  obachman@mathematik.uni-kl.de (Olaf Bachmann)
5 *  Created: 11/99
6 *  Version: $Id: omAlloc.h,v 1.2 1999-11-26 17:57:52 obachman Exp $
7 *******************************************************************/
8#ifndef OM_ALLOC_H
9#define OM_ALLOC_H
10
11#ifndef OM_USE_EXTERNAL_MALLOC
12/*******************************************************************
13 * forward type declarations
14 *******************************************************************/
15struct omBin_s;
16struct omSpecBin_s;
17typedef struct omBin_s      omBin_t;
18typedef struct omSpecBin_s  omSpecBin_t;
19typedef omBin_t*            omBin;
20typedef omSpecBin_t*        omSpecBin;
21
22/*******************************************************************
23 * 
24 *  Alloc/Free Func
25 * 
26 *******************************************************************/
27extern void* omFuncAllocBin(omBin bin);
28extern void* omFuncAlloc0Bin(omBin bin);
29extern void  omFuncFreeBin(void* addr);
30extern void  omFuncPseudoFreeBin(void* addr);
31
32extern void* omFuncAllocBlock(size_t size);
33extern void* omFuncAlloc0Block(size_t size);
34extern void* omFuncReallocBlock(void* addr, size_t old_size, size_t new_size);
35extern void* omFuncReallo0cBlock(void* addr, size_t old_size, size_t new_size);
36extern void* omFuncAllocAlignedBlock(size_t size);
37extern void* omFuncAlloc0AlignedBlock(size_t size);
38extern void* omFuncReallocAlignedBlock(void* addr,size_t old_size,size_t new_size);
39extern void* omFuncRealloc0AlignedBlock(void* addr,size_t old_size,size_t new_size);
40extern void  omFuncFreeBlock(void* addr, size_t size);
41extern void* omFuncPseudoReallocBlock(void* addr, size_t old_size, size_t new_size);
42extern void* omFuncPseudoReallo0cBlock(void* addr, size_t old_size, size_t new_size);
43extern void* omFuncPseudoReallocAlignedBlock(void* addr,size_t old_size,size_t new_size);
44extern void* omFuncPseudoRealloc0AlignedBlock(void* addr,size_t old_size,size_t new_size);
45extern void  omFuncPseudoFreeBlock(void* addr, size_t size);
46
47extern void* omFuncAllocChunk(size_t size);
48extern void* omFuncAlloc0Chunk(size_t size);
49extern void* omFuncAllocAlignedChunk(size_t size);
50extern void* omFuncAlloc0AlignedChunk(size_t size);
51extern void* omFuncReallocChunk(void* addr, size_t size);
52extern void* omFuncReallocAlignedChunk(void* addr, size_t size);
53extern void  omFuncFreeChunk(void* addr);
54extern void  omFuncFreeAlignedChunk(void* addr);
55extern void* omFuncPseudoReallocChunk(void* addr, size_t size);
56extern void* omFuncPseudoReallocAlignedChunk(void* addr, size_t size);
57extern void  omFuncPseudoFreeChunk(void* addr);
58extern void  omFuncPseudoFreeAlignedChunk(void* addr);
59
60/*******************************************************************
61 * 
62 *  Alloc/Free Check
63 * 
64 *******************************************************************/
65extern void* omCheckAllocBin(omBin bin, int level);
66extern void* omCheckAlloc0Bin(omBin bin, int level);
67extern void  omCheckFreeBin(void* addr, int level);
68extern void  omCheckPseudoFreeBin(void* addr, int level);
69
70extern void* omCheckAllocBlock(size_t size, int level);
71extern void* omCheckAlloc0Block(size_t size, int level);
72extern void* omCheckReallocBlock(void* addr, size_t old_size, size_t new_size, int level);
73extern void* omCheckReallo0cBlock(void* addr, size_t old_size, size_t new_size, int level);
74extern void* omCheckAllocAlignedBlock(size_t size, int level);
75extern void* omCheckAlloc0AlignedBlock(size_t size, int level);
76extern void* omCheckReallocAlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
77extern void* omCheckRealloc0AlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
78extern void  omCheckFreeBlock(void* addr, size_t size, int level);
79extern void* omCheckPseudoReallocBlock(void* addr, size_t old_size, size_t new_size, int level);
80extern void* omCheckPseudoReallo0cBlock(void* addr, size_t old_size, size_t new_size, int level);
81extern void* omCheckPseudoReallocAlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
82extern void* omCheckPseudoRealloc0AlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
83extern void  omCheckPseudoFreeBlock(void* addr, size_t size, int level);
84
85extern void* omCheckAllocChunk(size_t size, int level);
86extern void* omCheckAlloc0Chunk(size_t size, int level);
87extern void* omCheckAllocAlignedChunk(size_t size, int level);
88extern void* omCheckAlloc0AlignedChunk(size_t size, int level);
89extern void* omCheckReallocChunk(void* addr, size_t size, int level);
90extern void* omCheckReallocAlignedChunk(void* addr, size_t size, int level);
91extern void  omCheckFreeChunk(void* addr, int level);
92extern void  omCheckFreeAlignedChunk(void* addr, int level);
93extern void* omCheckPseudoReallocChunk(void* addr, size_t size, int level);
94extern void* omCheckPseudoReallocAlignedChunk(void* addr, size_t size, int level);
95extern void  omCheckPseudoFreeChunk(void* addr, int level);
96extern void  omCheckPseudoFreeAlignedChunk(void* addr, int level);
97
98/* Check of addr/bins -- return NULL if ok, error message, otherwise */
99extern char* omCheckBinAddr(void* addr, int level);
100extern char* omCheckBin(omBin bin, int level);
101extern char* omCheckAllBins(int level);
102extern char* omCheckBlockAddr(void* addr, size_t size, int level);
103extern char* omCheckAlignedBlockAddr(void* addr, size_t size, int level);
104extern char* omCheckChunkAddr(void* addr);
105extern char* omCheckAlignedChunkAddr(void* addr);
106
107/* CheckReport of addr/bins -- return 1 if ok, otherwise print error and backtrace to stdout
108   and return 0 */
109extern int omCheckReportBinAddr(void* addr, int level);
110extern int omCheckReportBin(omBin bin, int level);
111extern int omCheckReportAllBins(int level);
112extern int omCheckReportBlockAddr(void* addr, size_t size, int level);
113extern int omCheckReportAlignedBlockAddr(void* addr, size_t size, int level);
114extern int omCheckReportChunkAddr(void* addr);
115extern int omCheckReportAlignedChunkAddr(void* addr);
116
117/*******************************************************************
118 * 
119 *  Alloc/Free Debug
120 * 
121 *******************************************************************/
122extern void* omDebugAllocBin(omBin bin, int level);
123extern void* omDebugAlloc0Bin(omBin bin, int level);
124extern void  omDebugFreeBin(void* addr, int level);
125extern void  omDebugPseudoFreeBin(void* addr, int level);
126
127extern void* omDebugAllocBlock(size_t size, int level);
128extern void* omDebugAlloc0Block(size_t size, int level);
129extern void* omDebugReallocBlock(void* addr, size_t old_size, size_t new_size, int level);
130extern void* omDebugReallo0cBlock(void* addr, size_t old_size, size_t new_size, int level);
131extern void* omDebugAllocAlignedBlock(size_t size, int level);
132extern void* omDebugAlloc0AlignedBlock(size_t size, int level);
133extern void* omDebugReallocAlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
134extern void* omDebugRealloc0AlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
135extern void  omDebugFreeBlock(void* addr, size_t size, int level);
136extern void* omDebugPseudoReallocBlock(void* addr, size_t old_size, size_t new_size, int level);
137extern void* omDebugPseudoReallo0cBlock(void* addr, size_t old_size, size_t new_size, int level);
138extern void* omDebugPseudoReallocAlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
139extern void* omDebugPseudoRealloc0AlignedBlock(void* addr,size_t old_size,size_t new_size, int level);
140extern void  omDebugPseudoFreeBlock(void* addr, size_t size, int level);
141
142extern void* omDebugAllocChunk(size_t size, int level);
143extern void* omDebugAlloc0Chunk(size_t size, int level);
144extern void* omDebugAllocAlignedChunk(size_t size, int level);
145extern void* omDebugAlloc0AlignedChunk(size_t size, int level);
146extern void* omDebugReallocChunk(void* addr, size_t size, int level);
147extern void* omDebugReallocAlignedChunk(void* addr, size_t size, int level);
148extern void  omDebugFreeChunk(void* addr, int level);
149extern void  omDebugFreeAlignedChunk(void* addr, int level);
150extern void* omDebugPseudoReallocChunk(void* addr, size_t size, int level);
151extern void* omDebugPseudoReallocAlignedChunk(void* addr, size_t size, int level);
152extern void  omDebugPseudoFreeChunk(void* addr, int level);
153extern void  omDebugPseudoFreeAlignedChunk(void* addr, int level);
154
155/* Debug of addr/bins -- return NULL if ok, error message, otherwise */
156extern char* omDebugBinAddr(void* addr, int level);
157extern char* omDebugBin(omBin bin, int level);
158extern char* omDebugAllBins(int level);
159extern char* omDebugBlockAddr(void* addr, size_t size, int level);
160extern char* omDebugAlignedBlockAddr(void* addr, size_t size, int level);
161extern char* omDebugChunkAddr(void* addr);
162extern char* omDebugAlignedChunkAddr(void* addr);
163
164/* DebugReport of addr/bins -- return 1 if ok, otherwise print error and current stack
165   backtrace to stderr and return 0 */
166extern int omDebugReportBinAddr(void* addr, int level);
167extern int omDebugReportBin(omBin bin, int level);
168extern int omDebugReportAllBins(int level);
169extern int omDebugReportBlockAddr(void* addr, size_t size, int level);
170extern int omDebugReportAlignedBlockAddr(void* addr, size_t size, int level);
171extern int omDebugReportChunkAddr(void* addr);
172extern int omDebugReportAlignedChunkAddr(void* addr);
173
174/*******************************************************************
175 * 
176 *  om Alloc/Free Macro definitions
177 * 
178 *******************************************************************/
179
180#if definded(OM_DEBUG) && OM_DEBUG != 0
181/*******************************************************************
182 * Alloc/Free for Debug
183 *******************************************************************/
184
185#define omTypeAllocBin(type, addr, bin)                     addr = (type) omDebugAllocBin(bin, OM_DEBUG)
186#define omTypeAlloc0Bin(type, addr, bin)                    addr = (type) omDebugAlloc0Bin(bin, OM_DEBUG)
187#define omAllocBin(bin)                                     omDebugAllocBin(bin, OM_DEBUG)
188#define omAlloc0Bin(bin)                                    omDebugAlloc0Bin(bin, OM_DEBUG)
189#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
190#define omFreeBin(addr)                                     omDebugPseudoFreeBin(addr, OM_DEBUG)
191#else
192#define omFreeBin(addr)                                     omDebugFreeBin(addr, OM_DEBUG)
193#endif
194
195#define omTypeAllocBlock(type, addr, size)                  addr = (type) omDebugAllocBlock(size, OM_DEBUG)
196#define omTypeAlloc0Block(type, addr, size)                 addr = (type) omDebugAlloc0Block(size, OM_DEBUG)
197#define omAllocBlock(size)                                  omDebugAllocBlock(size, OM_DEBUG)
198#define omAlloc0Block(size)                                 omDebugAlloc0Block(size, OM_DEBUG)
199#define omTypeAllocAlignedBlock(type, addr, size)           addr = (type) omDebugAllocAlignedBlock(size, OM_DEBUG)
200#define omTypeAlloc0AlignedBlock(type, addr, size)          addr = (type) omDebugAlloc0AlignedBlock(size, OM_DEBUG)
201#define omAllocAlignedBlock(size)                           omDebugAllocAlignedBlock(size, OM_DEBUG)
202#define omAlloc0AlignedBlock(size)                          omDebugAlloc0AlignedBlock(size, OM_DEBUG)
203#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
204#define omReallocBlock(addr, old_size, new_size)            omDebugPseudoReallocBlock(addr, old_size, new_size, OM_DEBUG)
205#define omRealloc0Block(addr, old_size, new_size)           omDebugPseudoRealloc0Block(addr, old_size, new_size, OM_DEBUG)
206#define omReallocAlignedBlock(addr, old_size, new_size)     omDebugPseudoReallocAlignedBlock(addr, old_size, new_size, OM_DEBUG)
207#define omRealloc0AlignedBlock(addr, old_size, new_size)    omDebugPseudoRealloc0AlignedBlock(addr, old_size, new_size, OM_DEBUG)
208#define omFreeBlock(addr, size)                             omDebugPseudoFreeBlock(addr, size, OM_DEBUG)
209#else
210#define omReallocBlock(addr, old_size, new_size)            omDebugReallocBlock(addr, old_size, new_size, OM_DEBUG)
211#define omRealloc0Block(addr, old_size, new_size)           omDebugRealloc0Block(addr, old_size, new_size, OM_DEBUG)
212#define omReallocAlignedBlock(addr, old_size, new_size)     omDebugReallocAlignedBlock(addr, old_size, new_size, OM_DEBUG)
213#define omRealloc0AlignedBlock(addr, old_size, new_size)    omDebugRealloc0AlignedBlock(addr, old_size, new_size, OM_DEBUG)
214#define omFreeBlock(addr, size)                             omDebugFreeBlock(addr, size, OM_DEBUG)
215#endif
216
217#define omTypeAllocChunk(type, addr, size)                  addr = (type) omDebugAllocChunk(size, OM_DEBUG)
218#define omTypeAlloc0Chunk(type, addr, size)                 addr = (type) omDebugAlloc0Chunk(size, OM_DEBUG)
219#define omAllocChunk(size)                                  omDebugAllocChunk(size, OM_DEBUG)
220#define omAlloc0Chunk(size)                                 omDebugAlloc0Chunk(size, OM_DEBUG)
221#define omTypeAllocAlignedChunk(type, addr, size)           addr = (type) omDebugAllocAlignedChunk(size, OM_DEBUG)
222#define omTypeAlloc0AlignedChunk(type, addr, size)          addr = (type) omDebugAlloc0AlignedChunk(size, OM_DEBUG)
223#define omAllocAlignedChunk(size)                           omDebugAllocAlignedChunk(size, OM_DEBUG)
224#define omAlloc0AlignedChunk(size)                          omDebugAlloc0AlignedChunk(size, OM_DEBUG)
225#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
226#define omReallocChunk(addr, new_size)                      omDebugPseudoReallocChunk(addr, new_size, OM_DEBUG)
227#define omReallocAlignedChunk(addr, new_size)               omDebugPseudoReallocAlignedChunk(addr, new_size, OM_DEBUG)
228#define omFreeChunk(addr)                                   omDebugPseudoFreeChunk(addr, OM_DEBUG)
229#define omFreeAlignedChunk(addr)                            omDebugPseudoFreeAlignedChunk(addr, OM_DEBUG)
230#else
231#define omReallocChunk(addr, new_size)                      omDebugReallocChunk(addr, new_size, OM_DEBUG)
232#define omReallocAlignedChunk(addr, new_size)               omDebugReallocAlignedChunk(addr, new_size, OM_DEBUG)
233#define omFreeChunk(addr)                                   omDebugFreeChunk(addr, OM_DEBUG)
234#define omFreeAlignedChunk(addr)                            omDebugFreeAlignedChunk(addr, OM_DEBUG)
235#endif
236
237
238#define omTestBinAddr(addr)                                 omDebugBinAddr(addr, OM_DEBUG)
239#define omTestBlockAddr(addr, size)                         omDebugBlockAddr(addr, size, OM_DEBUG)
240#define omTestAlignedBlockAddr(addr, size)                  omDebugAlignedBlockAddr(addr, size, OM_DEBUG)
241#define omTestChunkAddr(addr)                               omDebugBlockAddr(addr, size, OM_DEBUG)
242#define omTestAlignedChunkAddr(addr)                        omDebugAlignedBlockAddr(addr, size, OM_DEBUG)
243
244#define omTestReportBinAddr(addr)                           omDebugReportBinAddr(addr, OM_DEBUG)
245#define omTestReportBlockAddr(addr, size)                   omDebugReportBlockAddr(addr, size, OM_DEBUG)
246#define omTestReportAlignedBlockAddr(addr, size)            omDebugReportAlignedBlockAddr(addr, size, OM_DEBUG)
247#define omTestReportChunkAddr(addr)                         omDebugReportBlockAddr(addr, size, OM_DEBUG)
248#define omTestReportAlignedChunkAddr(addr)                  omDebugReportAlignedBlockAddr(addr, size, OM_DEBUG)
249
250#define omTestUsedAddrs()                                   omDebugUsedAddrs(OM_DEBUG)
251#define omTestFreeAddrs()                                   omDebugFreeAddrs(OM_DEBUG)
252#define omTestAllAddrs()                                    omDebugAllAddrs(OM_DEBUG)
253#define omTestReportUsedAddrs()                             omDebugReportUsedAddrs(OM_DEBUG)
254#define omTestReportFreeAddrs()                             omDebugReportFreeAddrs(OM_DEBUG)
255#define omTestReportAllAddrs()                              omDebugReportAllAddrs(OM_DEBUG)
256
257#elsif defined(OM_CHECK) && OM_CHECK != 0
258/*******************************************************************
259 * Alloc/Free for Check
260 *******************************************************************/
261
262#define omTypeAllocBin(type, addr, bin)                     addr = (type) omCheckAllocBin(bin, OM_DEBUG)
263#define omTypeAlloc0Bin(type, addr, bin)                    addr = (type) omCheckAlloc0Bin(bin, OM_DEBUG)
264#define omAllocBin(bin)                                     omCheckAllocBin(bin, OM_DEBUG)
265#define omAlloc0Bin(bin)                                    omCheckAlloc0Bin(bin, OM_DEBUG)
266#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
267#define omFreeBin(addr)                                     omCheckPseudoFreeBin(addr, OM_DEBUG)
268#else
269#define omFreeBin(addr)                                     omCheckFreeBin(addr, OM_DEBUG)
270#endif
271
272#define omTypeAllocBlock(type, addr, size)                  addr = (type) omCheckAllocBlock(size, OM_DEBUG)
273#define omTypeAlloc0Block(type, addr, size)                 addr = (type) omCheckAlloc0Block(size, OM_DEBUG)
274#define omAllocBlock(size)                                  omCheckAllocBlock(size, OM_DEBUG)
275#define omAlloc0Block(size)                                 omCheckAlloc0Block(size, OM_DEBUG)
276#define omTypeAllocAlignedBlock(type, addr, size)           addr = (type) omCheckAllocAlignedBlock(size, OM_DEBUG)
277#define omTypeAlloc0AlignedBlock(type, addr, size)          addr = (type) omCheckAlloc0AlignedBlock(size, OM_DEBUG)
278#define omAllocAlignedBlock(size)                           omCheckAllocAlignedBlock(size, OM_DEBUG)
279#define omAlloc0AlignedBlock(size)                          omCheckAlloc0AlignedBlock(size, OM_DEBUG)
280#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
281#define omReallocBlock(addr, old_size, new_size)            omCheckPseudoReallocBlock(addr, old_size, new_size, OM_DEBUG)
282#define omRealloc0Block(addr, old_size, new_size)           omCheckPseudoRealloc0Block(addr, old_size, new_size, OM_DEBUG)
283#define omReallocAlignedBlock(addr, old_size, new_size)     omCheckPseudoReallocAlignedBlock(addr, old_size, new_size, OM_DEBUG)
284#define omRealloc0AlignedBlock(addr, old_size, new_size)    omCheckPseudoRealloc0AlignedBlock(addr, old_size, new_size, OM_DEBUG)
285#define omFreeBlock(addr, size)                             omCheckPseudoFreeBlock(addr, size, OM_DEBUG)
286#else
287#define omReallocBlock(addr, old_size, new_size)            omCheckReallocBlock(addr, old_size, new_size, OM_DEBUG)
288#define omRealloc0Block(addr, old_size, new_size)           omCheckRealloc0Block(addr, old_size, new_size, OM_DEBUG)
289#define omReallocAlignedBlock(addr, old_size, new_size)     omCheckReallocAlignedBlock(addr, old_size, new_size, OM_DEBUG)
290#define omRealloc0AlignedBlock(addr, old_size, new_size)    omCheckRealloc0AlignedBlock(addr, old_size, new_size, OM_DEBUG)
291#define omFreeBlock(addr, size)                             omCheckFreeBlock(addr, size, OM_DEBUG)
292#endif
293
294#define omTypeAllocChunk(type, addr, size)                  addr = (type) omCheckAllocChunk(size, OM_DEBUG)
295#define omTypeAlloc0Chunk(type, addr, size)                 addr = (type) omCheckAlloc0Chunk(size, OM_DEBUG)
296#define omAllocChunk(size)                                  omCheckAllocChunk(size, OM_DEBUG)
297#define omAlloc0Chunk(size)                                 omCheckAlloc0Chunk(size, OM_DEBUG)
298#define omTypeAllocAlignedChunk(type, addr, size)           addr = (type) omCheckAllocAlignedChunk(size, OM_DEBUG)
299#define omTypeAlloc0AlignedChunk(type, addr, size)          addr = (type) omCheckAlloc0AlignedChunk(size, OM_DEBUG)
300#define omAllocAlignedChunk(size)                           omCheckAllocAlignedChunk(size, OM_DEBUG)
301#define omAlloc0AlignedChunk(size)                          omCheckAlloc0AlignedChunk(size, OM_DEBUG)
302#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
303#define omReallocChunk(addr, new_size)                      omCheckPseudoReallocChunk(addr, new_size, OM_DEBUG)
304#define omReallocAlignedChunk(addr, new_size)               omCheckPseudoReallocAlignedChunk(addr, new_size, OM_DEBUG)
305#define omFreeChunk(addr)                                   omCheckPseudoFreeChunk(addr, OM_DEBUG)
306#define omFreeAlignedChunk(addr)                            omCheckPseudoFreeAlignedChunk(addr, OM_DEBUG)
307#else
308#define omReallocChunk(addr, new_size)                      omCheckReallocChunk(addr, new_size, OM_DEBUG)
309#define omReallocAlignedChunk(addr, new_size)               omCheckReallocAlignedChunk(addr, new_size, OM_DEBUG)
310#define omFreeChunk(addr)                                   omCheckFreeChunk(addr, OM_DEBUG)
311#define omFreeAlignedChunk(addr)                            omCheckFreeAlignedChunk(addr, OM_DEBUG)
312#endif
313
314
315#define omTestBinAddr(addr)                                 omCheckBinAddr(addr, OM_DEBUG)
316#define omTestBlockAddr(addr, size)                         omCheckBlockAddr(addr, size, OM_DEBUG)
317#define omTestAlignedBlockAddr(addr, size)                  omCheckAlignedBlockAddr(addr, size, OM_DEBUG)
318#define omTestChunkAddr(addr)                               omCheckBlockAddr(addr, size, OM_DEBUG)
319#define omTestAlignedChunkAddr(addr)                        omCheckAlignedBlockAddr(addr, size, OM_DEBUG)
320
321#define omTestReportBinAddr(addr)                           omCheckReportBinAddr(addr, OM_DEBUG)
322#define omTestReportBlockAddr(addr, size)                   omCheckReportBlockAddr(addr, size, OM_DEBUG)
323#define omTestReportAlignedBlockAddr(addr, size)            omCheckReportAlignedBlockAddr(addr, size, OM_DEBUG)
324#define omTestReportChunkAddr(addr)                         omCheckReportBlockAddr(addr, size, OM_DEBUG)
325#define omTestReportAlignedChunkAddr(addr)                  omCheckReportAlignedBlockAddr(addr, size, OM_DEBUG)
326
327#define omTestUsedAddrs()                                   omCheckUsedAddrs(OM_DEBUG)
328#define omTestFreeAddrs()                                   omCheckFreeAddrs(OM_DEBUG)
329#define omTestAllAddrs()                                    omCheckAllAddrs(OM_DEBUG)
330#define omTestReportUsedAddrs()                             omCheckReportUsedAddrs(OM_DEBUG)
331#define omTestReportFreeAddrs()                             omCheckReportFreeAddrs(OM_DEBUG)
332#define omTestReportAllAddrs()                              omCheckReportAllAddrs(OM_DEBUG)
333
334
335#else
336/*******************************************************************
337 * Alloc/Free -- the real thing
338 *******************************************************************/
339
340#define omTypeAllocBin(type, addr, bin)                     __omTypeAllocBin(type, addr, bin)
341#define omTypeAlloc0Bin(type, addr, bin)                    __omTypeAllocBin(type, addr, bin)
342#define omAllocBin(bin)                                     _omAllocBin(bin)
343#define omAlloc0Bin(bin)                                    _omAlloc0Bin(bin)
344#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
345#define omFreeBin(addr)                                     _omPseudoFreeBin(addr)
346#else
347#define omFreeBin(addr)                                     __omFreeBin(addr)
348#endif
349
350#define omTypeAllocBlock(type, addr, size)                  __omTypeAllocBlock(type, addr, size)
351#define omTypeAlloc0Block(type, addr, size)                 __omTypeAlloc0Block(type, addr, size)
352#define omAllocBlock(size)                                  _omAllocBlock(size)
353#define omAlloc0Block(size)                                 _omAlloc0Block(size)
354#define omTypeAllocAlignedBlock(type, addr, size)           __omTypeAllocAlignedBlock(type, addr, size)
355#define omTypeAlloc0AlignedBlock(type, addr, size)          __omTypeAlloc0AlignedBlock(type, addr, size)
356#define omAllocAlignedBlock(size)                           _omAllocAlignedBlock(size)
357#define omAlloc0AlignedBlock(size)                          _omAlloc0AlignedBlock(size)
358#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
359#define omReallocBlock(addr, old_size, new_size)            _omPseudoReallocBlock(addr, old_size, new_size)
360#define omRealloc0Block(addr, old_size, new_size)           _omPseudoRealloc0Block(addr, old_size, new_size)
361#define omReallocAlignedBlock(addr, old_size, new_size)     _omPseudoReallocAlignedBlock(addr, old_size, new_size)
362#define omRealloc0AlignedBlock(addr, old_size, new_size)    _omPseudoRealloc0AlignedBlock(addr, old_size, new_size)
363#define omFreeBlock(addr, size)                             _omPseudoFreeBlock(addr, size)
364#else
365#define omReallocBlock(addr, old_size, new_size)            _omReallocBlock(addr, old_size, new_size)
366#define omRealloc0Block(addr, old_size, new_size)           _omRealloc0Block(addr, old_size, new_size)
367#define omReallocAlignedBlock(addr, old_size, new_size)     _omReallocAlignedBlock(addr, old_size, new_size)
368#define omRealloc0AlignedBlock(addr, old_size, new_size)    _omRealloc0AlignedBlock(addr, old_size, new_size)
369#define omFreeBlock(addr, size)                             __FreeBlock(addr, size)
370#endif
371
372#define omTypeAllocChunk(type, addr, size)                  __omAllocChunk(type, addr, size)
373#define omTypeAlloc0Chunk(type, addr, size)                 __omAlloc0Chunk(type, addr, size)
374#define omAllocChunk(size)                                  _omAllocChunk(size)
375#define omAlloc0Chunk(size)                                 _omAlloc0Chunk(size)
376#define omTypeAllocAlignedChunk(type, addr, size)           __omTypeAllocAlignedChunk(type, addr, size)
377#define omTypeAlloc0AlignedChunk(type, addr, size)          __omTypeAlloc0AlignedChunk(type, addr, size)
378#define omAllocAlignedChunk(size)                           _omAllocAlignedChunk(size)
379#define omAlloc0AlignedChunk(size)                          _omAllocAlignedChunk(size)
380#if defined(OM_PSEUDO_FREE) && OM_PSEUDO_FREE != 0
381#define omReallocChunk(addr, new_size)                      _omPseudoReallocChunk(addr, new_size)
382#define omReallocAlignedChunk(addr, new_size)               _omPseudoReallocAlignedChunk(addr, new_size)
383#define omFreeChunk(addr)                                   _omPseudoFreeChunk(addr)
384#define omFreeAlignedChunk(addr)                            _omPseudoFreeAlignedChunk(addr)
385#else
386#define omReallocChunk(addr, new_size)                      _omReallocChunk(addr, new_size)
387#define omReallocAlignedChunk(addr, new_size)               _omReallocAlignedChunk(addr, new_size)
388#define omFreeChunk(addr)                                   _omFreeChunk(addr)
389#define omFreeAlignedChunk(addr)                            _omFreeAlignedChunk(addr)
390#endif
391
392
393#define omTestBinAddr(addr)                                 (NULL)
394#define omTestBlockAddr(addr, size)                         (NULL)
395#define omTestAlignedBlockAddr(addr, size)                  (NULL)
396#define omTestChunkAddr(addr)                               (NULL)
397#define omTestAlignedChunkAddr(addr)                        (NULL)
398
399#define omTestReportBinAddr(addr)                           (1)
400#define omTestReportBlockAddr(addr, size)                   (1)
401#define omTestReportAlignedBlockAddr(addr, size)            (1)
402#define omTestReportChunkAddr(addr)                         (1)
403#define omTestReportAlignedChunkAddr(addr)                  (1)
404
405#define omTestUsedAddrs()                                   (NULL)
406#define omTestFreeAddrs()                                   (NULL)
407#define omTestAllAddrs()                                    (NULL)
408#define omTestReportUsedAddrs()                             (1)
409#define omTestReportFreeAddrs()                             (1)
410#define omTestReportAllAddrs()                              (1)
411
412#endif /* om Macro definitions */
413
414/*******************************************************************
415 * 
416 *  Bin stuff
417 * 
418 *******************************************************************/
419omBin omGetSpecBin(size_t size);
420omBin omGetAlignedSpecBin(size_t size);
421void  omUnGetSpecBin(omBin *bin);
422
423unsigned long omGetNewStickyBinTag(omBin bin);
424void omSetStickyBinTag(omBin bin, unsigned long sticky);
425void omUnSetStickyBinTag(omBin bin, unsigned long sticky);
426void omDeleteStickyBinTag(omBin bin, unsigned long sticky);
427
428unsigned long omGetNewStickyAllBinTag();
429void omSetStickyAllBinTag(omBin bin, unsigned long sticky);
430void omUnSetStickyAllBinTag(omBin bin, unsigned long sticky);
431void omDeleteStickyAllBinTag(omBin bin, unsigned long sticky);
432
433#include <stdio.h>
434extern void omPrintBinStats(FILE* fd);
435extern void omPrintBinStat(FILE * fd, omBin bin);
436
437
438
439#else /* OM_USE_EXTERNAL_MALLOC */
440
441/*******************************************************************
442 * 
443 *  Alternative set of defines
444 * 
445 *******************************************************************/
446typedef size_t omBin;
447typedef size_t omSpecBin;
448
449#define omTypeAllocBin(type, addr, bin)                     addr = (type) malloc(bin)
450#define omTypeAlloc0Bin(type, addr, bin)                    do {addr = (type) malloc(bin); memset(addr, 0, bin);} while(0)
451#define omAllocBin(bin)                                     malloc(bin)
452#define omAlloc0Bin(bin)                                    omAlternativeMalloc0(bin)
453#define omFreeBin(addr)                                     free(addr)
454
455#define omTypeAllocBlock(type, addr, size)                  addr = (type) malloc(size)
456#define omTypeAlloc0Block(type, addr, size)                 do {addr = (type) malloc(size); memset(addr, 0, size);} while(0)
457#define omAllocBlock(size)                                  malloc(size)
458#define omAlloc0Block(size)                                 omAlternativeMalloc0(size)
459#define omTypeAllocAlignedBlock(type, addr, size)           addr = (type) malloc(size)
460#define omTypeAlloc0AlignedBlock(type, addr, size)          do {addr = (type) malloc(size); memset(addr, 0, size);} while(0)
461#define omAllocAlignedBlock(size)                           malloc(size)
462#define omAlloc0AlignedBlock(size)                          omAlternativeMalloc0(size)
463#define omReallocBlock(addr, old_size, new_size)            realloc(addr, new_size)
464#define omRealloc0Block(addr, old_size, new_size)           omAlternativeRealloc0Block(addr, old_size, new_size)
465#define omReallocAlignedBlock(addr, old_size, new_size)     realloc(addr, new_size)
466#define omRealloc0AlignedBlock(addr, old_size, new_size)    omAlternativeRealloc0Block(addr, old_size, new_size)
467#define omFreeBlock(addr, size)                             free(addr)
468
469#define omTypeAllocChunk(type, addr, size)                  addr = (type) malloc(size)
470#define omTypeAlloc0Chunk(type, addr, size)                 do {addr = (type) malloc(size); memset(addr, 0, size);} while(0)
471#define omAllocChunk(size)                                  malloc(size)
472#define omAlloc0Chunk(size)                                 omAlternativeMalloc0(size)
473#define omTypeAllocAlignedChunk(type, addr, size)           addr = (type) malloc(size)
474#define omTypeAlloc0AlignedChunk(type, addr, size)          do {addr = (type) malloc(size); memset(addr, 0, size);} while(0)
475#define omAllocAlignedChunk(size)                           malloc(size)
476#define omAlloc0AlignedChunk(size)                          omAlternativeMalloc0(size)
477#define omReallocChunk(addr, new_size)                      realloc(addr, new_size)
478#define omAlignedReallocChunk(addr, new_size)               realloc(addr, new_size)
479#define omFreeChunk(addr)                                   free(addr)
480#define omFreeAlignedChunk(addr)                            free(addr)
481
482
483#define omTestBinAddr(addr)                                 (NULL)
484#define omTestBlockAddr(addr, size)                         (NULL)
485#define omTestAlignedBlockAddr(addr, size)                  (NULL)
486#define omTestChunkAddr(addr)                               (NULL)
487#define omTestAlignedChunkAddr(addr)                        (NULL)
488
489#define omTestReportBinAddr(addr)                           (1)
490#define omTestReportBlockAddr(addr, size)                   (1)
491#define omTestReportAlignedBlockAddr(addr, size)            (1)
492#define omTestReportChunkAddr(addr)                         (1)
493#define omTestReportAlignedChunkAddr(addr)                  (1)
494
495#define omTestUsedAddrs()                                   (NULL)
496#define omTestFreeAddrs()                                   (NULL)
497#define omTestAllAddrs()                                    (NULL)
498#define omTestReportUsedAddrs()                             (1)
499#define omTestReportFreeAddrs()                             (1)
500#define omTestReportAllAddrs()                              (1)
501
502#endif /* OM_USE_EXTERNAL_MALLOC */
503
504#endif /* OM_ALLOC_H */
Note: See TracBrowser for help on using the repository browser.