DIRECTORY PrincOps USING [ ControlLink, Frame, FrameHandle, GlobalFrameHandle, Priority, PsbIndex, PsbNull ], WorldVM USING [ World ]; AMProcessBasic: DEFINITIONS = BEGIN OPEN WorldVM; State: TYPE = { ready, -- on the ready list (but not waitingSV or waitingCV) waitingSV, -- ready (but not waitingCV), but no state vector available waitingCV, -- "waiting" flag in PSB: indicates process is on some CV queue waitingML, -- "enterFailed" flag in PSB and not ready, not faulted: waiting to enter a monitor frameFault, pageFault, writeProtectFault, unknownFault, -- on a fault queue dead, -- not a currently valid process unknown, -- not dead, not waitngCV, not waitingML, not on ready list, not on a fault queue uncaughtSignal, breakpoint, callDebugger -- these states aren't generated by this interface }; Faulted: TYPE = State[frameFault..unknownFault]; GFTable: TYPE = REF GFTableObject; -- NIL => all modules GFTableObject: TYPE = RECORD[ count: CARDINAL, -- amount of the sequence actually used; "length" is allocated length frames: SEQUENCE length: CARDINAL OF PrincOps.GlobalFrameHandle ]; Info: PROC[world: World, psbi: PrincOps.PsbIndex, freeze, thaw: BOOL, fullStatus: BOOL, filter: GFTable, wantedStates: PACKED ARRAY State OF BOOL] RETURNS[ state: State, faultData: LONG CARDINAL, priority: PrincOps.Priority, frame: PrincOps.FrameHandle, frozenFrame: PrincOps.FrameHandle, topFrame: PrincOps.FrameHandle]; Thaw: PROC[world: World, psbi: PrincOps.PsbIndex]; Abort: PROC[world: World, psbi: PrincOps.PsbIndex]; ReturnLink: PROC[world: World, frame: PrincOps.FrameHandle, psbi: PrincOps.PsbIndex _ PrincOps.PsbNull] RETURNS [link: PrincOps.ControlLink]; END. βAMProcessBasic.mesa: processes - PrincOps-level interface Copyright c 1985 by Xerox Corporation. All rights reserved. Andrew Birrell August 1, 1983 12:09 pm Russ Atkinson (RRA) February 6, 1985 9:12:12 pm PST This interface is primarily private, for use by AMProcessImpl. The "ReturnLink" procedure is for use by the AMTypes implementation. Others should consult a wizard before venturing in here. Returns the link that would exist if there were no frozen processes. Assumes frame is valid. This is primarily for use by "DynamicParent" in AMTypes. If frame.returnlink is frozen, determines "real" link by looking in "freezees" array. If psbi = PrincOps.PsbNull, determines psbi by enumerating all frozen processes (slowly). Κώ˜codešœ9™9Kšœ Οmœ1™