00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _EYEDBLIB_STD_MALLOC_H
00026 #define _EYEDBLIB_STD_MALLOC_H
00027
00028 typedef struct STDMap STDMap;
00029
00030 typedef struct STDHandle STDHandle;
00031
00032 typedef void (*STDAllocTrigger)(STDHandle *, void *, unsigned, void *);
00033 typedef void (*STDFreeTrigger)(STDHandle *, void *, unsigned, void *);
00034 typedef void (*STDReallocTrigger)(STDHandle *, void *, unsigned, unsigned, void *);
00035
00036 struct STDHandle {
00037
00038 STDMap *map;
00039 unsigned int idx;
00040 int trace;
00041 long user_ctx;
00042 int stop_size;
00043 int counter;
00044 int stop_counter;
00045 STDAllocTrigger alloc_trig;
00046 void *alloc_user_data;
00047 STDFreeTrigger free_trig;
00048 void *free_user_data;
00049 STDReallocTrigger realloc_trig;
00050 void *realloc_user_data;
00051 int fd;
00052 };
00053
00054 typedef unsigned int STDOffset;
00055
00056 extern STDHandle *STDCreate(char *, int);
00057 extern STDHandle *STDOpen(char *);
00058 extern void STDInit(STDHandle *);
00059 extern void STDClose(STDHandle *);
00060
00061 extern void *STDAlloc(STDHandle *, unsigned int);
00062 extern void *STDAllocZero(STDHandle *, unsigned int);
00063 extern void *STDRealloc(STDHandle *, void *, unsigned int);
00064 extern int STDFree(STDHandle *, void *);
00065
00066 extern int STDGetSize(STDHandle *, void *);
00067 extern void STDShowMemory(STDHandle *);
00068 extern int STDCheckMemory(STDHandle *);
00069 extern void STDGetInfo(STDHandle *, int *, int *, int *, int *);
00070 extern void STDLock(STDMap *);
00071 extern void STDUnlock(STDMap *);
00072 extern STDHandle *STDGetDefaultHandle();
00073
00074 extern void STDTraceSet(STDHandle *, int);
00075 extern int STDTraceGet(STDHandle *);
00076 extern void STDUserContextSet(STDHandle *, int user_ctx);
00077 extern long STDUserContextGet(STDHandle *);
00078 extern long STDIdxGet(STDHandle *);
00079 extern void STDStopOnSize(STDHandle *, int stop_size);
00080 extern void STDStopOnCounter(STDHandle *, int stop_counter);
00081
00082 extern STDAllocTrigger STDAllocTriggerSet(STDHandle *, STDAllocTrigger,
00083 void *user_data);
00084 extern STDFreeTrigger STDFreeTriggerSet(STDHandle *, STDFreeTrigger,
00085 void *user_data);
00086 extern STDReallocTrigger STDReallocTriggerSet(STDHandle *, STDReallocTrigger,
00087 void *user_data);
00088
00089 #define STD_ADDR_(MAP, OFFSET) \
00090 ((OFFSET) ? ((char *)(MAP) + (OFFSET)) : (char *)0)
00091
00092 #define STD_OFFSET_(MAP, ADDR) \
00093 ((STDOffset)((ADDR) ? ((char *)(ADDR) - (char *)(MAP)) : 0))
00094
00095 #define STD_ADDR(STDH, OFFSET) STD_ADDR_((STDH)->map, OFFSET)
00096
00097 #define STD_OFFSET(STDH, ADDR) STD_OFFSET_((STDH)->map, ADDR)
00098
00099 #define STD_NULLOFFSET ((STDOffset)0)
00100
00101 #endif