packages feed

language-Modula2-0.1: examples/Modula-2_Libraries/PMOS/sources/general/storage1.mod

IMPLEMENTATION MODULE Storage1;

	(********************************************************)
	(*							*)
	(*  Storage allocation with critical section protection	*)
	(*							*)
	(*  Programmer:		P. Moylan			*)
	(*  Last edited:	15 March 1995			*)
	(*  Status:		OK				*)
	(*							*)
	(********************************************************)

IMPORT Storage;

FROM TaskControl IMPORT
    (* type *)	Lock,
    (* proc *)	CreateLock, Obtain, Release;

(************************************************************************)

VAR L: Lock;

(************************************************************************)

PROCEDURE ALLOCATE (VAR (*OUT*) p: ADDRESS;  size: CARDINAL);

    (* Allocates a block of size bytes. *)

    BEGIN
	Obtain (L);
	Storage.ALLOCATE (p, size);
	Release (L);
    END ALLOCATE;

(************************************************************************)

PROCEDURE DEALLOCATE (VAR (*INOUT*) p: ADDRESS;  size: CARDINAL);

    (* Deallocates memory that was allocated by ALLOCATE. *)

    VAR PSW: CARDINAL;

    BEGIN
	Obtain (L);
	Storage.DEALLOCATE (p, size);
	Release (L);
    END DEALLOCATE;

(************************************************************************)

BEGIN
    CreateLock (L);
END Storage1.