home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / misc / enote / source.lha / source / memory.h < prev   
C/C++ Source or Header  |  1995-01-10  |  1KB  |  38 lines

  1. #ifndef DWR_MEMORY_H
  2. #define DWR_MEMORY_H
  3.  
  4. /*****************************************************************************
  5.  *
  6.  *  Memory.a
  7.  *
  8.  *  Memory allocation routines.
  9.  */
  10.  
  11. extern UBYTE * __asm Malloc(register __d0 ULONG);
  12. extern UBYTE * __asm Calloc(register __d0 ULONG, register __d1 ULONG);
  13. extern VOID    __asm Free(register __a1 UBYTE *);
  14.  
  15. extern UBYTE * __asm AllocMA(register __d0 ULONG, register __d1 ULONG);
  16. extern VOID    __asm FreeMA(register __a1 UBYTE *);
  17. extern VOID          FreeMAll(VOID);
  18.  
  19. typedef struct MemABlock{
  20.   ULONG                  Size;
  21.   struct MemABlock      *Succ;
  22.   struct MemABlock      *Pred;
  23.   UBYTE                  Block[1];
  24. } MABLK;
  25.  
  26. /*
  27.  * If no block could be allocated, YOUR routine NoMem() is called.  Do what
  28.  * ever you think is appropriate, like printing a message.  If you return 0,
  29.  * the allocator (Malloc(), Calloc(), AllocMA()) returns 0.  If you return
  30.  * -1, the allocator does a retry, and any other value is used as a pointer
  31.  * to a block of the requested type and size.  Be aware that it is linked in
  32.  * the memory list and that it will be freed by a call to FreeMAll().
  33.  */
  34.  
  35. extern UBYTE *NoMem(ULONG Size, ULONG Type);
  36.  
  37. #endif
  38.