#ifndef EXEC_MEMORY_H
#define EXEC_MEMORY_H
/*
** $Filename: exec/memory.h $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 36.12 $
** $Date: 91/03/15 $
**
** Definitions and structures used by the memory allocation system
**
** (C) Copyright 1985-1991 Commodore-Amiga, Inc.
** All Rights Reserved
*/

#ifndef EXEC_NODES_H
#include "exec/nodes.h"
#endif 




struct MemChunk {
 struct MemChunk *mc_Next; 
 ULONG mc_Bytes; 
};




struct MemHeader {
 struct Node mh_Node;
 UWORD mh_Attributes; 
 struct MemChunk *mh_First; 
 APTR mh_Lower; 
 APTR mh_Upper; 
 ULONG mh_Free; 
};




struct MemEntry {
union {
 ULONG meu_Reqs; 
 APTR meu_Addr; 
 } me_Un;
 ULONG me_Length; 
};

#define me_un me_Un 
#define me_Reqs me_Un.meu_Reqs
#define me_Addr me_Un.meu_Addr





struct MemList {
 struct Node ml_Node;
 UWORD ml_NumEntries; 
 struct MemEntry ml_ME[1]; 
};

#define ml_me ml_ME 





#define MEMF_ANY (0L) 
#define MEMF_PUBLIC (1L<<0)
#define MEMF_CHIP (1L<<1)
#define MEMF_FAST (1L<<2)
#define MEMF_LOCAL (1L<<8) 
#define MEMF_24BITDMA (1L<<9) 

#define MEMF_CLEAR (1L<<16) 
#define MEMF_LARGEST (1L<<17) 
#define MEMF_REVERSE (1L<<18) 
#define MEMF_TOTAL (1L<<19) 


#define MEM_BLOCKSIZE 8L
#define MEM_BLOCKMASK (MEM_BLOCKSIZE-1)

#endif 
