SpyClient.mesa
edited by: Maxwell March 21, 1983 10:25 am
see spy.doc for instructions on how to use this interface
DIRECTORY
BBObjectLocation USING [Location],
IO USING [STREAM],
PSB USING [PsbNull, PsbIndex],
Rope USING [ROPE];
SpyClient: DEFINITIONS = BEGIN
OPEN Rope;
DataType: TYPE = {CPU, process, breakProcess, pagefaults, allocations, wordsAllocated, spaces, userDefined};
-- common procedures --
InitializeSpy: PROC[
dataType: DataType ← CPU,
process: PSB.PsbIndex ← PSB.PsbNull] -- only used if dataType = process
RETURNS[errorMsg: ROPE]; -- errorMsg = NIL indicates success
StandardSpy: PROC = INLINE {IF InitializeSpy[].errorMsg # NIL THEN ERROR};
StartSpy: PROC; -- the spy records data whenever # starts exceeds # stops
StopSpy: PROC; -- you must StartSpy to enable breaks
DisplayData: PROC[ -- automatically stops Spy
cutoff: CARDINAL ← 3, -- cutoff of printing (in percentage points)
herald: ROPENIL, -- client supplied herald (follows Cedar Spy of xxx)
stream: IO.STREAMNIL]; -- a typescript is opened by default
-- break procedures --
SetStartBreak: PROC[-- spy will be started whenever this break is encountered
procedure: ROPENIL, -- of form "ModuleIMPL.Proc"; only used if loc = NIL
loc: BBObjectLocation.Location ← NIL]
RETURNS[ok: BOOLEAN, msg: ROPE];
SetStopBreak: PROC[ -- spy will be stopped whenever this break is encountered
procedure: ROPENIL, -- sets a break at the EXIT of the procedure
loc: BBObjectLocation.Location ← NIL]
RETURNS[ok: BOOLEAN, msg: ROPE];
ClearBreaks: PROC;
SetUserBreak: PROC[ -- log a count whenever this break is encountered
procedure: ROPENIL, -- of form "ModuleImpl.Proc"; only used if loc = NIL
loc: BBObjectLocation.Location ← NIL]
RETURNS[ok: BOOLEAN, msg: ROPE];
ClearUserBreaks: PROC;
END. .