/* Dit is de mem_alloc.h file zoals beloofd in de practicumhandleiding */
/*                                                                     */
/*   Auteur:	Dick van Albada                                        */
/*		Faculteit Wiskunde en Informatica		       */
/*		Universiteit van Amsterdam			       */
/*   Datum:	5 oktober 1993                                         */
/*   Versie:	0.01                                                   */
/* 								       */

/* Constanten */

#define MEM_SIZE	(32768)

/* Procedures */

void mem_init(long mem[MEM_SIZE]);

/* mem_init wordt aangeroepen voor enige andere procedure uit deze file
   wordt gebruikt. Hij initialseert de memory-manager en zorgt ervoor
   dat het te beheren geheugen daar bekend is
   */

long  mem_get(long request);

/* mem_get alloceert een stuk geheugen ter grootte van request - indien
   mogelijk en geeft de index van het eerste element van dat stuk geheugen
   terug.
   Indien de aanvraag niet gehonoreerd kan worden, wordt -1 teruggegeven
   */

void mem_free(long index);

/* mem_free wordt aangeroepen om een eerder verkregen stuk geheugen op
   locatie index weer vrij te geven. Index moet een geldige waarde
   hebben
   */

double mem_internal();

/* mem_internal berekent de fractie interne fragmentatie volgens de
   in de handleiding gegeven formule
   */

void mem_available(long *empty, long *large, long *n_holes);

/* mem_available vertelt de gebruiker hoeveel geheugen er nog
   beschikbaar is
empty:	totale hoeveelheid vrije ruimte
large:	omvang van het grootste gat, gecorrigeerd voor
administratie
n_holes:	het aantal gaten
*/

void mem_exit();

/* mem_exit wordt alleen als laatste routine aangeroepen en beeindigt
   het gebruik van de memory manager.
   Deze routine zorgt zonodig voor opruimen en afronden.
   */
