<<>> <> <> <> <> <<>> <> <> <> <> <<>> DIRECTORY CirioThings, Rope, UXProcs; CirioThingsImpl: CEDAR PROGRAM IMPORTS UXProcs EXPORTS CirioThings ~ { << Types>> SymEntry: TYPE = REF SymEntryBody; -- copied from CirioNubAccess for temporary fix. SymEntryBody: TYPE = RECORD[ name: Rope.ROPE, type: CARD, value: CARD, size: CARD, fileSeqNum: CARD]; <> DoIncludes: PROC = TRUSTED MACHINE CODE { "*"; "#include \n"; "#include \n"; "." }; CallDebugger: PUBLIC PROC [key: CARD32] ~ { <> <<>> XRCallDebugger: PROCEDURE [key: CARD32] RETURNS [CirioThings.XRDBReply] ~ TRUSTED MACHINE CODE { "XR_CallDebugger" }; LookupCallDebugger3: PROCEDURE RETURNS [SymEntry] ~ TRUSTED MACHINE CODE { "+static word LookupCallDebugger3 () {\n"; " return XR_ILGetMatchingSymEntryByName(0, \"_XR_CallDebugger3\", 0xffffffff, 4, 1, 0);\n"; " };\n"; ".LookupCallDebugger3"; }; result: CirioThings.XRDBReply; proc: PROC[key: CARD32, msg: CirioThings.XRDBRequest, stopall: CARD32] RETURNS [CirioThings.XRDBReply]; entry: SymEntry ¬ LookupCallDebugger3[]; IF entry # NIL THEN { proc ¬ LOOPHOLE[UXProcs.ToCedarProc[entry.value]]; -- XR¬CallDebugger3 result ¬ proc[key: 0, msg: CirioThings.XRDBRequest.break, stopall: key]; } ELSE result ¬ XRCallDebugger[key: 0]; SELECT result FROM CirioThings.XRDBReply.proceed => { NULL; }; ENDCASE => { ERROR ABORTED; }; RETURN; }; DebugNubStart: PROC = TRUSTED MACHINE CODE {"XR_run_CirioNub"}; CedarCirioNubStart: PROC = TRUSTED MACHINE CODE {"XR_run_CedarCirioNub"}; DebugNubStart[]; CedarCirioNubStart[]; }.