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.