-- File: [Indigo]Dragon>DragonArbiterImpl.sak -- 28-Feb-82 20:03:55 DIRECTORY DragonArbiter: TYPE, SakuraRT: TYPE; DragonArbiterImpl: MONITOR IMPORTS SakuraRT EXPORTS DragonArbiter = BEGIN Arbiter: PUBLIC PROC [ClockA, ClockB, Proc1Rq: SakuraRT.Handle, Proc1Gr: SakuraRT.Handle] = { {ENABLE {ABORTED => GO TO Aborted}; DO SakuraRT.GetNew[ClockA, TRUE]; NULL; IF NARROW[SakuraRT.Get[Proc1Rq], REF BOOLEAN]^ THEN SakuraRT.Put[Proc1Gr, NEW[BOOLEAN _ TRUE]]; SakuraRT.GetNew[ClockB, TRUE]; NULL; IF NARROW[SakuraRT.Get[Proc1Rq], REF BOOLEAN]^ THEN SakuraRT.Put[Proc1Gr, NEW[BOOLEAN _ TRUE]] ENDLOOP; SakuraRT.ProcessEnd[]} EXITS Aborted => SakuraRT.AbortAll[]}; END.