28 #ifndef __RTXMEMORY_H__ 29 #define __RTXMEMORY_H__ 41 #define RT_MH_DONTKEEPFREE 0x1 42 #define RT_MH_VALIDATEPTR 0x2 43 #define RT_MH_CHECKHEAP 0x4 44 #define RT_MH_TRACE 0x8 45 #define RT_MH_DIAG 0x10 46 #define RT_MH_DIAG_DEBUG 0x20 47 #define RT_MH_ZEROONFREE 0x40 48 #define RT_MH_ZEROARRAY 0x80 49 #define RT_MH_SYSALLOC 0x100 50 #define RT_MH_TRACE_FREELIST 0x200 55 #define OSRTMH_PROPID_DEFBLKSIZE 1 56 #define OSRTMH_PROPID_SETFLAGS 2 57 #define OSRTMH_PROPID_CLEARFLAGS 3 58 #define OSRTMH_PROPID_KEEPFREEUNITS 4 60 #define OSRTMH_PROPID_USER 10 62 #define OSRTXM_K_MEMBLKSIZ (4*1024) 77 #define OSRTALLOCTYPE(pctxt,type) \ 78 (type*) rtxMemHeapAlloc (&(pctxt)->pMemHeap, sizeof(type)) 86 #define OSRTALLOCTYPEZ(pctxt,type) \ 87 (type*) rtxMemHeapAllocZ (&(pctxt)->pMemHeap, sizeof(type)) 100 #define OSRTREALLOCARRAY(pctxt,pseqof,type) do {\ 101 if (sizeof(type)*(pseqof)->n < (pseqof)->n) return RTERR_NOMEM; \ 102 if (((pseqof)->elem = (type*) rtxMemHeapRealloc \ 103 (&(pctxt)->pMemHeap, (pseqof)->elem, sizeof(type)*(pseqof)->n)) == 0) \ 104 return RTERR_NOMEM; \ 108 #define OSCRTMALLOC0(nbytes) malloc(nbytes) 109 #define OSCRTFREE0(ptr) free(ptr) 113 extern EXTERNRT
OSCTXT g_ctxt;
115 #define OSCRTMALLOC0(nbytes) rtxMemAlloc(&g_ctxt,(nbytes)) 116 #define OSCRTFREE0(ptr) rtxMemFreePtr(&g_ctxt,(ptr)) 118 #define OSCRTMALLOC0(nbytes) (void*)0 119 #define OSCRTFREE0(ptr) (void*)0 124 #define OSCRTMALLOC rtxMemAlloc 125 #define OSCRTFREE rtxMemFreePtr 136 #if !defined(OSCDECL) 137 #if defined(_MSC_VER) || defined(__BORLANDC__) 138 #define OSCDECL __cdecl 144 EXTERNRT
void rtxMemHeapAddRef (
void** ppvMemHeap);
145 EXTERNRT
void* rtxMemHeapAlloc (
void** ppvMemHeap, OSSIZE nbytes);
146 EXTERNRT
void* rtxMemHeapAllocZ (
void** ppvMemHeap, OSSIZE nbytes);
147 EXTERNRT
void* rtxMemHeapSysAlloc (
void** ppvMemHeap, OSSIZE nbytes);
148 EXTERNRT
void* rtxMemHeapSysAllocZ (
void** ppvMemHeap, OSSIZE nbytes);
149 EXTERNRT
int rtxMemHeapCheckPtr (
void** ppvMemHeap,
const void* mem_p);
150 EXTERNRT
void rtxMemHeapFreeAll (
void** ppvMemHeap);
151 EXTERNRT
void rtxMemHeapFreePtr (
void** ppvMemHeap,
void* mem_p);
152 EXTERNRT
void rtxMemHeapSysFreePtr (
void** ppvMemHeap,
void* mem_p);
163 EXTERNRT
void* rtxMemHeapReallocStatic
164 (
void** ppvMemHeap,
void* mem_p, OSSIZE oldsize, OSSIZE newsize);
166 EXTERNRT
void* rtxMemHeapRealloc
167 (
void** ppvMemHeap,
void* mem_p, OSSIZE nbytes_);
169 EXTERNRT
void* rtxMemHeapSysRealloc
170 (
void** ppvMemHeap,
void* mem_p, OSSIZE nbytes_);
172 EXTERNRT
void rtxMemHeapRelease (
void** ppvMemHeap);
173 EXTERNRT
void rtxMemHeapReset (
void** ppvMemHeap);
174 EXTERNRT
void rtxMemHeapSetProperty (
void** ppvMemHeap,
175 OSUINT32 propId,
void* pProp);
177 EXTERNRT
void* rtxMemNewArray (OSSIZE nbytes);
178 EXTERNRT
void* rtxMemNewArrayZ (OSSIZE nbytes);
179 EXTERNRT
void rtxMemDeleteArray (
void* mem_p);
181 EXTERNRT
void* rtxMemHeapAutoPtrRef (
void** ppvMemHeap,
void* ptr);
182 EXTERNRT
int rtxMemHeapAutoPtrUnref (
void** ppvMemHeap,
void* ptr);
183 EXTERNRT
int rtxMemHeapAutoPtrGetRefCount (
void** ppvMemHeap,
void* mem_p);
185 EXTERNRT
void rtxMemHeapInvalidPtrHook (
void** ppvMemHeap,
const void* mem_p);
187 EXTERNRT
void rtxMemHeapCheck (
void **ppvMemHeap,
const char* file,
int line);
223 OSMallocFunc malloc_func,
224 OSReallocFunc realloc_func,
225 OSFreeFunc free_func);
241 (
void **ppvMemHeap,
void* pmem, OSSIZE memsize) ;
243 #if !defined(_ARMTCC) && !defined(__SYMBIAN32__) 260 OSReallocFunc realloc_func,
261 OSFreeFunc free_func);
265 EXTERNRT
void rtxMemFreeOpenSeqExt
276 #ifndef __SYMBIAN32__ 312 EXTERNRT OSBOOL
rtxMemIsZero (
const void* pmem, OSSIZE memsiz);
315 EXTERNRT
void rtxMemSetStaticBuf (
void* memHeapBuf, OSUINT32 blkSize);
327 #define rtxMemAlloc(pctxt,nbytes) \ 328 rtxMemHeapAlloc(&(pctxt)->pMemHeap,nbytes) 340 #define rtxMemSysAlloc(pctxt,nbytes) \ 341 rtxMemHeapSysAlloc(&(pctxt)->pMemHeap,nbytes) 352 #define rtxMemAllocZ(pctxt,nbytes) \ 353 rtxMemHeapAllocZ(&(pctxt)->pMemHeap,nbytes) 368 #define rtxMemSysAllocZ(pctxt,nbytes) \ 369 rtxMemHeapSysAllocZ(&(pctxt)->pMemHeap,nbytes) 386 #define rtxMemRealloc(pctxt,mem_p,nbytes) \ 387 rtxMemHeapRealloc(&(pctxt)->pMemHeap, (void*)mem_p, nbytes) 405 #define rtxMemSysRealloc(pctxt,mem_p,nbytes) \ 406 rtxMemHeapSysRealloc(&(pctxt)->pMemHeap,(void*)mem_p,nbytes) 419 #define rtxMemFreePtr(pctxt,mem_p) \ 420 rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) 432 #define rtxMemSysFreePtr(pctxt,mem_p) \ 433 rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) 470 #define rtxMemAllocType(pctxt,ctype) \ 471 (ctype*)rtxMemHeapAlloc(&(pctxt)->pMemHeap,sizeof(ctype)) 486 #define rtxMemSysAllocType(pctxt,ctype) \ 487 (ctype*)rtxMemHeapSysAlloc(&(pctxt)->pMemHeap,sizeof(ctype)) 498 #define rtxMemAllocTypeZ(pctxt,ctype) \ 499 (ctype*)rtxMemHeapAllocZ(&(pctxt)->pMemHeap,sizeof(ctype)) 514 #define rtxMemSysAllocTypeZ(pctxt,ctype) \ 515 (ctype*)rtxMemHeapSysAllocZ(&(pctxt)->pMemHeap,sizeof(ctype)) 528 #define rtxMemFreeType(pctxt,mem_p) \ 529 rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) 542 #define rtxMemSysFreeType(pctxt,mem_p) \ 543 rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) 554 #define rtxMemAllocArray(pctxt,n,type) \ 555 (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), 0) 557 EXTERNRT
void* rtxMemAllocArray2
558 (
OSCTXT* pctxt, OSSIZE numElements, OSSIZE typeSize, OSUINT32 flags);
573 #define rtxMemSysAllocArray(pctxt,n,type) \ 574 (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), RT_MH_SYSALLOC) 585 #define rtxMemAllocArrayZ(pctxt,n,type) \ 586 (type*)rtxMemAllocArray2 (pctxt, n, sizeof(type), RT_MH_ZEROARRAY) 599 #define rtxMemFreeArray(pctxt,mem_p) \ 600 rtxMemHeapFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) 613 #define rtxMemSysFreeArray(pctxt,mem_p) \ 614 rtxMemHeapSysFreePtr(&(pctxt)->pMemHeap, (void*)mem_p) 630 #define rtxMemReallocArray(pctxt,mem_p,n,type) \ 631 (type*)rtxMemHeapRealloc(&(pctxt)->pMemHeap, (void*)mem_p, sizeof(type)*n) 646 #define rtxMemNewAutoPtr(pctxt,nbytes) \ 647 rtxMemHeapAlloc(&(pctxt)->pMemHeap, nbytes) 657 #define rtxMemAutoPtrRef(pctxt,ptr) \ 658 rtxMemHeapAutoPtrRef(&(pctxt)->pMemHeap, (void*)(ptr)) 670 #define rtxMemAutoPtrUnref(pctxt,ptr) \ 671 rtxMemHeapAutoPtrUnref(&(pctxt)->pMemHeap, (void*)(ptr)) 681 #define rtxMemAutoPtrGetRefCount(pctxt,ptr) \ 682 rtxMemHeapAutoPtrGetRefCount(&(pctxt)->pMemHeap, (void*)(ptr)) 692 #define rtxMemCheckPtr(pctxt,mem_p) \ 693 rtxMemHeapCheckPtr(&(pctxt)->pMemHeap, (void*)mem_p) 700 #define rtxMemCheck(pctxt) \ 701 rtxMemHeapCheck(&(pctxt)->pMemHeap, __FILE__, __LINE__) 708 #define rtxMemPrint(pctxt) \ 709 rtxMemHeapPrint(&(pctxt)->pMemHeap) 717 #define rtxMemPrintWithFree(pctxt) \ 718 rtxMemHeapPrintWithFree(&(pctxt)->pMemHeap) 727 #define rtxMemSetProperty(pctxt,propId,pProp) \ 728 rtxMemHeapSetProperty (&(pctxt)->pMemHeap, propId, pProp) OSUINT32 rtxMemGetDefBlkSize(OSVOIDARG)
OSUINT32 rtxMemHeapGetDefBlkSize(OSCTXT *pctxt)
Definition: rtxDList.h:64
OSBOOL rtxMemIsZero(const void *pmem, OSSIZE memsiz)
void rtxMemHeapPrintWithFree(void **ppvMemHeap)
void rtxMemHeapPrint(void **ppvMemHeap)
void rtxMemReset(OSCTXT *pctxt)
int rtxMemStaticHeapCreate(void **ppvMemHeap, void *pmem, OSSIZE memsize)
int rtxMemHeapCreateExt(void **ppvMemHeap, OSMallocFunc malloc_func, OSReallocFunc realloc_func, OSFreeFunc free_func)
void rtxMemSetAllocFuncs(OSMallocFunc malloc_func, OSReallocFunc realloc_func, OSFreeFunc free_func)
int rtxMemHeapCreate(void **ppvMemHeap)
OSBOOL rtxMemHeapIsEmpty(OSCTXT *pctxt)
void rtxMemSetDefBlkSize(OSUINT32 blkSize)
Definition: rtxContext.h:198
void rtxMemFree(OSCTXT *pctxt)