Browse Source

Unified interface

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8229 8c9fc860-2736-0410-a75d-ab315db34111
negelef 7 years ago
parent
commit
188d044598
1 changed files with 27 additions and 0 deletions
  1. 27 0
      source/Unix.Environment.Mod

+ 27 - 0
source/Unix.Environment.Mod

@@ -13,6 +13,7 @@ VAR status* := 0: WORD;
 VAR clock: Timer.Counter;
 VAR milliseconds: Timer.Counter;
 VAR sleepingQueue: Queues.Queue;
+VAR activity: Unix.Key_t;
 
 PROCEDURE {NORETURN} Abort-;
 BEGIN {UNCOOPERATIVE, UNCHECKED}
@@ -56,6 +57,16 @@ BEGIN {UNCOOPERATIVE, UNCHECKED}
 	Counters.Dec (Activities.awaiting);
 END Sleep;
 
+PROCEDURE Allocate- (size: SIZE): ADDRESS;
+BEGIN {UNCOOPERATIVE, UNCHECKED}
+	RETURN Unix.malloc (size);
+END Allocate;
+
+PROCEDURE Deallocate- (address: ADDRESS);
+BEGIN {UNCOOPERATIVE, UNCHECKED}
+	Unix.free (address);
+END Deallocate;
+
 PROCEDURE Enqueue (previous {UNTRACED}: Activities.Activity; argument: ADDRESS);
 VAR item: Queues.Item;
 BEGIN {UNCOOPERATIVE, UNCHECKED}
@@ -66,10 +77,26 @@ PROCEDURE GetInit- (n: SIZE; VAR val: LONGINT);
 BEGIN val := 0;
 END GetInit;
 
+PROCEDURE GetString- (CONST name: ARRAY OF CHAR; VAR result: ARRAY OF CHAR);
+BEGIN {UNCOOPERATIVE, UNCHECKED}
+	result := "";
+END GetString;
+
+PROCEDURE StoreActivity-;
+BEGIN {UNCOOPERATIVE, UNCHECKED}
+	Unix.WriteKey (activity, SYSTEM.GetActivity ());
+END StoreActivity;
+
+PROCEDURE RestoreActivity-;
+BEGIN {UNCOOPERATIVE, UNCHECKED}
+	SYSTEM.SetActivity(SYSTEM.VAL(Activities.Activity,Unix.ReadKey (activity)));
+END RestoreActivity;
+
 PROCEDURE Initialize-;
 BEGIN {UNCOOPERATIVE, UNCHECKED}
 	clock := Timer.GetCounter ();
 	milliseconds := Timer.GetFrequency () DIV 1000;
+	activity := Unix.NewKey ();
 END Initialize;
 
 PROCEDURE Terminate-;