-- File: PerfPrivate.mesa -- Edited by Sandman on September 19, 1980 11:51 AM DIRECTORY PerfStructures USING [ FrameHandle, GlobalFrameHandle, LongNumber, NullGlobalFrame, PsbHandle, RealPC]; PerfPrivate: DEFINITIONS = BEGIN OPEN PerfStructures; Number: TYPE = LONG CARDINAL; LongNumber: TYPE = PerfStructures.LongNumber; OverFlowNumber: Number = 20000000B; NodeID: TYPE = RECORD [pc: RealPC, frame: GlobalFrameHandle]; NullID: NodeID = [[0], NullGlobalFrame]; CallClass: TYPE = {perf, normal}; LegAddClass: TYPE = {none, successor}; LegTrackClass: TYPE = {none, successor, all}; VersionID: CARDINAL = 09190; PerfControlRecord: TYPE = MACHINE DEPENDENT RECORD [ measuringNow(0): BOOLEAN, nodeTable(1): POINTER TO NodeTab, legTable(2): POINTER TO LegTab, process(3): PsbHandle, lastCall(4): CallClass, trackLeg(5): LegTrackClass, addLeg(6): LegAddClass, totalBreaks(7): LONG CARDINAL, perfTime(9): LONG CARDINAL, totalTime(11): LONG CARDINAL, lastID(13): NodeIndex, nextLeg(14): CARDINAL, nextNode(15): CARDINAL, histFree(16): HistIndex, histBase(17): HistBase, saveBreakHandler(18): FrameHandle, self(19): FrameHandle, newSession(20): BOOLEAN, version(21): CARDINAL, pulseConversion(22): LONG CARDINAL _ NULL]; MaxNodes: CARDINAL = 20; -- maximum number of nodes tracked NodeIndex: TYPE = CARDINAL [0..MaxNodes + 1]; NullNode: NodeIndex = MaxNodes; AllNodes: NodeIndex = MaxNodes + 1; HighBits: CARDINAL = 77B; SubNodeIndex: TYPE = NodeIndex [0..MaxNodes); Node: TYPE = RECORD [ id: NodeID, hitsLow: CARDINAL, hist: HistIndex, overflowed: BOOLEAN, hitsHigh: [0..HighBits]]; NodeTab: TYPE = ARRAY SubNodeIndex OF Node; MaxLegs: CARDINAL = 40; -- maximum number of legs tracked NoLegSlot: LegIndex = MaxLegs + 1; LegIndex: TYPE = CARDINAL [0..MaxLegs + 1]; SubLegIndex: TYPE = LegIndex [0..MaxLegs); Leg: TYPE = RECORD [ start: Number, lock: BOOLEAN, from, to: NodeIndex, sum: Number, owner: UNSPECIFIED, hitsLow: CARDINAL, hist: HistIndex, overflowed, someIgnored: BOOLEAN, hitsHigh: [0..HighBits]]; LegTab: TYPE = ARRAY SubLegIndex OF Leg; HistClass: TYPE = {linear, log}; HistType: TYPE = {node, leg}; Histogram: TYPE = RECORD [ count, scale: CARDINAL, sum: Number, type: HistType, class: HistClass, nBuckets: [0..377B], overflow: CARDINAL, underflow: CARDINAL, base: Number, buckets: ARRAY [0..0) OF CARDINAL]; HistBase: TYPE = BASE POINTER; HistIndex: TYPE = HistBase RELATIVE ORDERED POINTER [0..HistSpaceSize) TO Histogram; NullHist: HistIndex = LAST[HistIndex]; HistSpaceSize: CARDINAL = 256; PCR: TYPE = POINTER TO PerfControlRecord; ReadWrite: TYPE = {read, write}; END.