4 #define ZONEID 0x1d4a11
6 typedef struct memblock_s {
7 int size; // including the header and possibly tiny fragments
8 int tag; // a tag of 0 is a free block
9 struct memblock_s *next, *prev;
10 int id; // should be ZONEID
17 int size; // total bytes malloced, including header
18 int used; // total bytes used
19 memblock_t blocklist; // start / end cap for linked list
25 static void Z_ClearZone( memzone_t *zone, int size ) {
28 // set the entire zone to one free block
30 zone->blocklist.next = zone->blocklist.prev = block =
31 (memblock_t *)( (byte *)zone + sizeof(memzone_t) );
33 zone->blocklist.tag = 1; // in use block
34 zone->blocklist.id = 0;
35 zone->blocklist.size = 0;
41 block->prev = block->next = &zone->blocklist;
42 block->tag = 0; // free block
44 block->size = size - sizeof(memzone_t);
47 void Com_InitSmallZoneMemory( void ) {
48 int s_smallZoneTotal = 512 * 1024;
49 // bk001205 - was malloc
50 memzone_t *smallzone = calloc( s_smallZoneTotal, 1 );
54 Z_ClearZone( smallzone, s_smallZoneTotal );
61 Com_InitSmallZoneMemory();