void Memory_Init (void *buf, int size) { int p; int zonesize = ZONE_MINSIZE; hunk_base = (byte *) buf; hunk_size = size; hunk_low_used = 0; hunk_high_used = 0; #if !defined(SERVERONLY) Cache_Init (); #endif /* SERVERONLY */ p = COM_CheckParm ("-zone"); if (p && p < com_argc-1) { zonesize = atoi (com_argv[p+1]) * 1024; if (zonesize < ZONE_MINSIZE && !COM_CheckParm ("-forcemem")) { Sys_Printf ("Requested zone size (%d Kb) too little, using %d Kb.\n", zonesize/1024, ZONE_MINSIZE_KB); Sys_Printf ("If you are sure, use the -forcemem switch.\n"); zonesize = ZONE_MINSIZE; } else if (zonesize > ZONE_MAXSIZE && !COM_CheckParm ("-forcemem")) { Sys_Printf ("Requested zone size (%d Kb) too large, using %d Kb.\n", zonesize/1024, ZONE_MAXSIZE_KB); Sys_Printf ("If you are sure, use the -forcemem switch.\n"); zonesize = ZONE_MAXSIZE; } } mainzone = (memzone_t *) Hunk_AllocName (zonesize, "zone"); Memory_InitZone (mainzone, Z_MAINZONE, zonesize); #if !defined(SERVERONLY) // initialize a 256 KB secondary zone for static textures if (!isDedicated) { sec_zone = (memzone_t *) Hunk_AllocName (ZONE_MINSIZE, "sec_zone"); Memory_InitZone (sec_zone, Z_SECZONE, ZONE_MINSIZE); } Cmd_AddCommand ("flush", Cache_Flush); #endif /* SERVERONLY */ #if Z_DEBUG_COMMANDS Cmd_AddCommand ("sys_memory", Memory_Display_f); Cmd_AddCommand ("sys_zone", Zone_Display_f); Cmd_AddCommand ("sys_stats", Memory_Stats_f); #if !defined(SERVERONLY) Cmd_AddCommand ("sys_cache", Cache_Display_f); #endif /* SERVERONLY */ #endif /* Z_DEBUG_COMMANDS */ }
/* ======================== Memory_Init ======================== */ void Memory_Init (void *buf, int size) { int p; int zonesize = DYNAMIC_SIZE; hunk_base = (byte *) buf; hunk_size = size; hunk_low_used = 0; hunk_high_used = 0; Cache_Init (); p = COM_CheckParm ("-zone"); if (p) { if (p < com_argc-1) zonesize = Q_atoi (com_argv[p+1]) * 1024; else Sys_Error ("Memory_Init: you must specify a size in KB after -zone"); } mainzone = (memzone_t *) Hunk_AllocName (zonesize, "zone" ); Memory_InitZone (mainzone, zonesize); Cmd_AddCommand ("hunk_print", Hunk_Print_f); //johnfitz }