ref: d7f038fe0566c8239ec0b2ca1e56686476e82e09
dir: /src/_z_zone.h/
/* Copyright (C) 1994-1995 Apogee Software, Ltd. Copyright (C) 2002-2015 icculus.org, GNU/Linux port Copyright (C) 2017-2018 Steven LeVesque This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ #ifndef _z_zone_private #define _z_zone_private #include "develop.h" #define MINFRAGMENT 64 #define DPMI_INT 0x31 #define MAXMEMORYSIZE 900000000 #define LEVELZONESIZE 250000 // memory storage data types #define MEMORYPRETAG (0x1a2b3c4d) #define MEMORYPOSTTAG (0x9f8e7d6b) typedef struct memblock_s { int size; // including the header and possibly tiny fragments void **user; // NULL if a free block int tag; // purgelevel struct memblock_s *next, *prev; } memblock_t; typedef struct { int size; // total bytes malloced, including header memblock_t blocklist; // start / end cap for linked list memblock_t *rover; } memzone_t; #endif