<> <> <> DIRECTORY PLAOps, Process; PLAOpsTimeOut: CEDAR MONITOR IMPORTS PLAOps, Process EXPORTS PLAOps = BEGIN mode: {off, on, reset, quit} _ off; checkMode: CONDITION; TimeOut: PUBLIC ENTRY PROC[minutes: CARDINAL] = { mode _ off; IF minutes > 177777B/60 THEN RETURN; TRUSTED { Process.SetTimeout[@checkMode, Process.SecondsToTicks[minutes*60]]; Process.SetPriority[Process.priorityNormal]}; WHILE mode=off DO WAIT checkMode ENDLOOP; WHILE mode=on OR mode=reset DO WAIT checkMode; SELECT mode FROM reset => {mode_on; LOOP}; on => {mode_quit; PLAOps.FinishMin _ TRUE}; ENDCASE; EXIT ENDLOOP }; TimeOutReset: PUBLIC ENTRY PROC = { mode _ reset; NOTIFY checkMode }; TimeOutQuit: PUBLIC ENTRY PROC = { mode _ quit; NOTIFY checkMode }; END.