home *** CD-ROM | disk | FTP | other *** search
- IFND EXEC_MEMORY_I
- EXEC_MEMORY_I SET 1
- **
- ** $VER: memory.i 39.3 (20.5.92)
- ** Includes Release 40.15
- **
- ** Definitions and structures used by the memory allocation system
- **
- ** (C) Copyright 1985-1993 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,KICK,10 ;Memory that can be used for KickTag stuff
-
- 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
-
- BITDEF MEM,NO_EXPUNGE,31 ;AllocMem: Do not cause expunge on failure
-
- *----- Current alignment rules for memory blocks (may increase) -----
- MEM_BLOCKSIZE EQU 8
- MEM_BLOCKMASK EQU (MEM_BLOCKSIZE-1)
-
-
- *---------------------------------------------------------------------
- *
- * Low memory handler data structure
- *
- * Note: This structure is *READ ONLY* and only EXEC can create it!
- *---------------------------------------------------------------------
- STRUCTURE MemHandlerData,0
- ULONG memh_RequestSize ; Requested allocation size
- ULONG memh_RequestFlags ; Requested allocation flags
- ULONG memh_Flags ; Flags (see blow)
- LABEL memh_SIZEOF
-
- * Flag definitions:
- BITDEF MEMH,RECYCLE,0 ; 0==First time, 1==recycle
-
- *------ Low Memory handler return values
- MEM_DID_NOTHING EQU 0 ; Nothing we could do...
- MEM_ALL_DONE EQU -1 ; We did all we could do
- MEM_TRY_AGAIN EQU 1 ; We did some, try the allocation again
-
- *---------------------------------------------------------------------
- *
- * 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
-