From 913c4b5f15b9ded3e26a05320e1874a4ecaadec5 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 21 Nov 2014 15:07:33 -0800 Subject: 280 - waking up sleeping routines Tests still hanging at some point. --- mu.arc.t | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'mu.arc.t') diff --git a/mu.arc.t b/mu.arc.t index 6d4536e3..d023d2f9 100644 --- a/mu.arc.t +++ b/mu.arc.t @@ -1720,6 +1720,46 @@ ("run" "f2 1") )) +(reset) +(new-trace "scheduler-sleep") +(add-fns + '((f1 + ((1 integer) <- copy (3 literal))) + (f2 + ((2 integer) <- copy (4 literal))))) +; add one baseline routine to run (empty running-routines* handled below) +(enq make-routine!f1 running-routines*) +(assert (is 1 len.running-routines*)) +; sleeping routine +(let routine make-routine!f2 + (= rep.routine!sleep '(literal 23)) + (set sleeping-routines*.routine)) +; not yet time for it to wake up +(= curr-cycle* 23) +(update-scheduler-state) +(if (~is 1 len.running-routines*) + (prn "F - scheduler lets routines sleep")) + +(reset) +(new-trace "scheduler-wakeup") +(add-fns + '((f1 + ((1 integer) <- copy (3 literal))) + (f2 + ((2 integer) <- copy (4 literal))))) +; add one baseline routine to run (empty running-routines* handled below) +(enq make-routine!f1 running-routines*) +(assert (is 1 len.running-routines*)) +; sleeping routine +(let routine make-routine!f2 + (= rep.routine!sleep '(literal 23)) + (set sleeping-routines*.routine)) +; time for it to wake up +(= curr-cycle* 24) +(update-scheduler-state) +(if (~is 2 len.running-routines*) + (prn "F - scheduler wakes up sleeping routines at the right time")) + (reset) (new-trace "sleep") (add-fns -- cgit 1.4.1-2-gfad0