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 _EYEDBSM_XM_MALLOC_H
00026 #define _EYEDBSM_XM_MALLOC_H
00027
00028 namespace eyedbsm {
00029
00030 typedef struct XMMap XMMap;
00031
00032 struct XMHandle {
00033 XMMap *map;
00034 struct Mutex *mp;
00035 int fd;
00036 void *x;
00037 };
00038
00039 typedef unsigned int XMOffset;
00040
00041 extern XMHandle *XMCreate(char *, unsigned int, void *);
00042 extern XMHandle *XMOpen(char *, void *x);
00043 extern void XMInit(XMHandle *);
00044 extern void XMClose(XMHandle *);
00045
00046 extern void *XMAlloc(XMHandle *, unsigned int);
00047 extern void *XMAllocZero(XMHandle *, unsigned int);
00048 extern void *XMRealloc(XMHandle *, void *, unsigned int);
00049 extern int XMFree(XMHandle *, void *);
00050
00051 extern int XMGetSize(XMHandle *, void *);
00052 extern void XMShowMemory(XMHandle *);
00053 extern int XMCheckMemory(XMHandle *);
00054 extern void XMGetInfo(XMHandle *, int *, int *, int *, int *);
00055 extern void XMLock(XMHandle *);
00056 extern void XMUnlock(XMHandle *);
00057
00058 #define XM_ADDR_(MAP, OFFSET) \
00059 ((OFFSET) ? ((char *)(MAP) + (OFFSET)) : (char *)0)
00060
00061 #define XM_OFFSET_(MAP, ADDR) \
00062 ((eyedbsm::XMOffset)((ADDR) ? ((char *)(ADDR) - (char *)(MAP)) : 0))
00063
00064 #define XM_ADDR(XMH, OFFSET) XM_ADDR_((XMH)->map, OFFSET)
00065
00066 #define XM_OFFSET(XMH, ADDR) XM_OFFSET_((XMH)->map, ADDR)
00067
00068 #define XM_NULLOFFSET ((eyedbsm::XMOffset)0)
00069
00070 }
00071
00072 #endif