98 lines
2.9 KiB
OpenEdge ABL
98 lines
2.9 KiB
OpenEdge ABL
IFND EXEC_MEMORY_I
|
|
EXEC_MEMORY_I SET 1
|
|
**
|
|
** $Filename: exec/memory.i $
|
|
** $Release: 2.04 Includes, V37.4 $
|
|
** $Revision: 36.11 $
|
|
** $Date: 91/03/15 $
|
|
**
|
|
** Definitions and structures used by the memory allocation system
|
|
**
|
|
** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
|
|
** All Rights Reserved
|
|
**
|
|
|
|
IFND EXEC_NODES_I
|
|
INCLUDE "exec/nodes.i"
|
|
ENDC ; EXEC_NODES_I
|
|
|
|
|
|
*---------------------------------------------------------------------
|
|
*
|
|
* Memory List Structures
|
|
*
|
|
*---------------------------------------------------------------------
|
|
*
|
|
* A memory list appears in two forms: One is a requirements list
|
|
* the other is a list of already allocated memory. The format is
|
|
* the same, with the reqirements/address field occupying the same
|
|
* position.
|
|
*
|
|
* The format is a linked list of ML structures each of which has
|
|
* an array of ME entries.
|
|
*
|
|
*---------------------------------------------------------------------
|
|
|
|
STRUCTURE ML,LN_SIZE
|
|
UWORD ML_NUMENTRIES ; The number of ME structures that follow
|
|
LABEL ML_ME ; where the ME structures begin
|
|
LABEL ML_SIZE ;Note: does NOT include any "ME" structures.
|
|
|
|
|
|
STRUCTURE ME,0
|
|
LABEL ME_REQS ; the AllocMem requirements
|
|
APTR ME_ADDR ; the address of this block (an alias
|
|
; for the same location as ME_REQS)
|
|
ULONG ME_LENGTH ; the length of this region
|
|
LABEL ME_SIZE
|
|
|
|
|
|
*------ memory options:
|
|
*------ see the AllocMem() documentation for details------*
|
|
|
|
MEMF_ANY EQU 0 ;Any type of memory will do
|
|
BITDEF MEM,PUBLIC,0
|
|
BITDEF MEM,CHIP,1
|
|
BITDEF MEM,FAST,2
|
|
BITDEF MEM,LOCAL,8 ;Memory that does not go away at RESET
|
|
BITDEF MEM,24BITDMA,9 ;DMAable memory within 24 bits of address
|
|
|
|
BITDEF MEM,CLEAR,16 ;AllocMem: NULL out area before return
|
|
BITDEF MEM,LARGEST,17 ;AvailMem: return the largest chunk size
|
|
BITDEF MEM,REVERSE,18 ;AllocMem: allocate from the top down
|
|
BITDEF MEM,TOTAL,19 ;AvailMem: return total size of memory
|
|
|
|
|
|
*----- Current alignment rules for memory blocks (may increase) -----
|
|
MEM_BLOCKSIZE EQU 8
|
|
MEM_BLOCKMASK EQU (MEM_BLOCKSIZE-1)
|
|
|
|
|
|
*---------------------------------------------------------------------
|
|
*
|
|
* Memory Region Header
|
|
*
|
|
*---------------------------------------------------------------------
|
|
|
|
STRUCTURE MH,LN_SIZE ; (LN_TYPE will be set to NT_MEMORY)
|
|
UWORD MH_ATTRIBUTES ; characteristics of this region
|
|
APTR MH_FIRST ; first free region
|
|
APTR MH_LOWER ; lower memory bound
|
|
APTR MH_UPPER ; upper memory bound+1
|
|
ULONG MH_FREE ; number of free bytes
|
|
LABEL MH_SIZE
|
|
|
|
|
|
*---------------------------------------------------------------------
|
|
*
|
|
* Memory Chunk
|
|
*
|
|
*---------------------------------------------------------------------
|
|
|
|
STRUCTURE MC,0
|
|
APTR MC_NEXT ; ptr to next chunk
|
|
ULONG MC_BYTES ; chunk byte size
|
|
APTR MC_SIZE
|
|
|
|
ENDC ; EXEC_MEMORY_I
|