ultimatepp/uppdev/Malloc7/Malloc6.h
cxl 4a1c627474 Adding uppdev....
git-svn-id: svn://ultimatepp.org/upp/trunk@328 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-08-15 08:36:24 +00:00

51 lines
1.1 KiB
C

#define V6
struct MSmall {
enum { CACHE = 16 };
struct FreeLink {
FreeLink *next;
};
struct Page {
Page *next;
Page *prev;
byte klass;
byte active;
MSmall *heap;
FreeLink *freelist;
void LinkSelf() { Dbl_Self(this); }
void Unlink() { Dbl_Unlink(this); }
void Link(Page *lnk) { Dbl_LinkAfter(this, lnk); }
void Format(int k);
byte *Begin() { return (byte *)this + sizeof(Page); }
byte *End() { return (byte *)this + 4096; }
};
static int Ksz(int k) { return (k + 1) << 4; }
static Page *global_empty[16];
static StaticMutex global_lock;
Page full[16][1];
Page work[16][1];
Page *empty[16];
void *cache[16][CACHE];
int level[16];
void Init();
void *AllocK(int k);
void FreeK(void *ptr, Page *page, int k);
void *Alloc(size_t sz);
void Free(void *ptr);
static void *CheckFree(void *p, int k);
static void FillFree(void *ptr, int k);
void Check();
};