Annotation of quakeworld/client/zone.h, revision 1.1.1.1

1.1       root        1: /*
                      2: Copyright (C) 1996-1997 Id Software, Inc.
                      3: 
                      4: This program is free software; you can redistribute it and/or
                      5: modify it under the terms of the GNU General Public License
                      6: as published by the Free Software Foundation; either version 2
                      7: of the License, or (at your option) any later version.
                      8: 
                      9: This program is distributed in the hope that it will be useful,
                     10: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
                     12: 
                     13: See the GNU General Public License for more details.
                     14: 
                     15: You should have received a copy of the GNU General Public License
                     16: along with this program; if not, write to the Free Software
                     17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
                     18: 
                     19: */
                     20: /*
                     21:  memory allocation
                     22: 
                     23: 
                     24: H_??? The hunk manages the entire memory block given to quake.  It must be
                     25: contiguous.  Memory can be allocated from either the low or high end in a
                     26: stack fashion.  The only way memory is released is by resetting one of the
                     27: pointers.
                     28: 
                     29: Hunk allocations should be given a name, so the Hunk_Print () function
                     30: can display usage.
                     31: 
                     32: Hunk allocations are guaranteed to be 16 byte aligned.
                     33: 
                     34: The video buffers are allocated high to avoid leaving a hole underneath
                     35: server allocations when changing to a higher video mode.
                     36: 
                     37: 
                     38: Z_??? Zone memory functions used for small, dynamic allocations like text
                     39: strings from command input.  There is only about 48K for it, allocated at
                     40: the very bottom of the hunk.
                     41: 
                     42: Cache_??? Cache memory is for objects that can be dynamically loaded and
                     43: can usefully stay persistant between levels.  The size of the cache
                     44: fluctuates from level to level.
                     45: 
                     46: To allocate a cachable object
                     47: 
                     48: 
                     49: Temp_??? Temp memory is used for file loading and surface caching.  The size
                     50: of the cache memory is adjusted so that there is a minimum of 512k remaining
                     51: for temp memory.
                     52: 
                     53: 
                     54: ------ Top of Memory -------
                     55: 
                     56: high hunk allocations
                     57: 
                     58: <--- high hunk reset point held by vid
                     59: 
                     60: video buffer
                     61: 
                     62: z buffer
                     63: 
                     64: surface cache
                     65: 
                     66: <--- high hunk used
                     67: 
                     68: cachable memory
                     69: 
                     70: <--- low hunk used
                     71: 
                     72: client and server low hunk allocations
                     73: 
                     74: <-- low hunk reset point held by host
                     75: 
                     76: startup hunk allocations
                     77: 
                     78: Zone block
                     79: 
                     80: ----- Bottom of Memory -----
                     81: 
                     82: 
                     83: 
                     84: */
                     85: 
                     86: void Memory_Init (void *buf, int size);
                     87: 
                     88: void Z_Free (void *ptr);
                     89: void *Z_Malloc (int size);                     // returns 0 filled memory
                     90: void *Z_TagMalloc (int size, int tag);
                     91: 
                     92: void Z_DumpHeap (void);
                     93: void Z_CheckHeap (void);
                     94: int Z_FreeMemory (void);
                     95: 
                     96: void *Hunk_Alloc (int size);           // returns 0 filled memory
                     97: void *Hunk_AllocName (int size, char *name);
                     98: 
                     99: void *Hunk_HighAllocName (int size, char *name);
                    100: 
                    101: int    Hunk_LowMark (void);
                    102: void Hunk_FreeToLowMark (int mark);
                    103: 
                    104: int    Hunk_HighMark (void);
                    105: void Hunk_FreeToHighMark (int mark);
                    106: 
                    107: void *Hunk_TempAlloc (int size);
                    108: 
                    109: void Hunk_Check (void);
                    110: 
                    111: typedef struct cache_user_s
                    112: {
                    113:        void    *data;
                    114: } cache_user_t;
                    115: 
                    116: void Cache_Flush (void);
                    117: 
                    118: void *Cache_Check (cache_user_t *c);
                    119: // returns the cached data, and moves to the head of the LRU list
                    120: // if present, otherwise returns NULL
                    121: 
                    122: void Cache_Free (cache_user_t *c);
                    123: 
                    124: void *Cache_Alloc (cache_user_t *c, int size, char *name);
                    125: // Returns NULL if all purgable data was tossed and there still
                    126: // wasn't enough room.
                    127: 
                    128: void Cache_Report (void);
                    129: 
                    130: 
                    131: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.