Cedar Nucleus: Interface with worldswap or tele- debugger.
DebuggerSwap.mesa
Andrew Birrell July 8, 1983 1:34 pm
Last Edited by: Levin, June 14, 1983 4:52 pm
DIRECTORY
BootFile USING[ Location],
PrincOps USING[ ControlLink, Frame, NullLink, PageNumber, PsbIndex ],
RuntimeError USING [UCSProc];
DebuggerSwap: DEFINITIONS =
BEGIN
Initialize: PROCEDURE;
Enable debugging.
StartSwatWatcher: SAFE PROCEDURE[enabled: BOOL];
Must have FORK working before calling this. Swat watcher is initially enabled iff "enable".
EnableSwatWatcher: SAFE PROCEDURE[enabled: BOOL];
Enable or disable the swat watcher.
NoteDiskDebugger: PROC[debugger, debuggee: BootFile.Location];
Informs world-swap of presence of usable outload/inload files
NoteLoadstate: PROC[PrincOps.PageNumber];
Remembers the loadstate data structure location for the debugger
NoteVMRunTable: PROC[LONG POINTER];
Remembers the VM backing storage data structure location for the debugger
Catcher: RuntimeError.UCSProc;
The default uncuaght signal handler, for use by SignalsImpl
teledebug: BOOL;
TRUE => use teledebugger even if we have a world-swap debugger.
WorryCallDebugger: READONLY SAFE PROCEDURE[STRING];
CallDebugger: SAFE PROCEDURE[STRING];
LocalLink: PROC[given: PrincOps.ControlLink, psbi: PrincOps.PsbIndex] RETURNS[link: PrincOps.ControlLink] = INLINE
Returns the control link that would exist if there were no frozen processes. Assumes psbi is the process on whose stack the given link occurred. If called from resident code this procedure will not fault.
BEGIN
IF (link ← given) = [frame[freezer]] AND freezer # NIL
THEN IF (link ← freezeesTable[psbi]) = PrincOps.NullLink -- not really frozen! --
THEN link ← given;
END;
Frozen: TYPE = ARRAY PrincOps.PsbIndex OF PrincOps.ControlLink;
freezeesTable: PRIVATE READONLY Frozen;
freezer: PRIVATE READONLY POINTER TO local PrincOps.Frame;
END.