RTTypesRemotePrivate.Mesa
last modified on July 7, 1983 3:04 pm by Paul Rovner
DIRECTORY
AMBridge USING[WordSequence, RemotePD, RemoteGlobalFrameHandle, RemoteFrameHandle, RemoteRef, RemoteSED, RemotePointer],
AMTypes USING[TypedVariable],
BcdDefs USING[BcdBase],
LoadState USING[ModuleIndex],
PrincOps USING[GlobalFrame, Frame, SignalDesc, EPRange, BytePC],
Rope USING[ROPE],
SafeStorage USING[Type],
RTCommon USING[Field],
RTSymbolDefs USING[SymbolTableBase, BodyIndex, CallableBodyIndex],
WorldVM USING[World, Incarnation];
RTTypesRemotePrivate: DEFINITIONS
= BEGIN OPEN AMBridge, RTSymbolDefs, WorldVM;
S I G N A L S
RemoteError: ERROR[type: RemoteErrorType, message: LONG POINTER TO TEXTNIL];
RemoteErrorType: TYPE = {addressFault, invalidFrame};
T Y P E S
EVRange: TYPE = [0..4*PrincOps.EPRange);
P R O C E D U R E S
This really ought to be in AMBridge.
RemoteTypeToLocal: PROC[world: World, remoteType: CARDINAL]
RETURNS[type: SafeStorage.Type];
UnwindRemoteIndirectProcDesc: PROC[pd: RemotePD] RETURNS[RemotePD];
AcquireCBTHandleFromRemotePD: PROC[pd: RemotePD]
RETURNS[stb: SymbolTableBase, cbti: CallableBodyIndex];
AcquireSTBFromRemoteGFH: PROC[gfh: RemoteGlobalFrameHandle]
RETURNS[stb: SymbolTableBase];
GetRemoteGFHeader: PROC[gfh: RemoteGlobalFrameHandle]
RETURNS[REF PrincOps.GlobalFrame];
GetRemoteFrameHeader: PROC[fh: RemoteFrameHandle] RETURNS[REF PrincOps.Frame];
GetRemoteWords: PROC[remotePointer: RemotePointer, nWords: NAT]
RETURNS[AMBridge.WordSequence];
GetRemoteWord: PROC[remotePointer: RemotePointer] RETURNS[WORD];
GetRemoteLC: PROC[remotePointer: RemotePointer] RETURNS[LONG CARDINAL];
RemoteStoreWords: PROC[from: LONG POINTER, to: RemotePointer, nWords: NAT];
RemoteStoreWord: PROC[to: RemotePointer, value: CARDINAL];
RemoteStoreDoubleWord: PROC[to: RemotePointer, value: LONG CARDINAL];
RemoteStoreFieldLong: PROC[
ptr: RemotePointer,
field: RTCommon.Field,
value: LONG CARDINAL
];
ValidateRemoteFrame: PROC[remoteFH: RemoteFrameHandle];
GetRemoteReferentType: PROC[remoteRef: RemoteRef]
RETURNS[SafeStorage.Type--valid locally--];
GetRemoteProcedureType: PROC[remotePD: RemotePD]
RETURNS[SafeStorage.Type--valid locally--];
GetRemoteSignalType: PROC[remoteSED: RemoteSED]
RETURNS[SafeStorage.Type--valid locally--];
IsRemoteCatchFrame: PROC[remoteFrameHandle: RemoteFrameHandle, bti: BodyIndex]
RETURNS[isCatchFrame: BOOLEANTRUE, revBti: BodyIndex];
AcquireBTIFromRemoteFH: PROC[remoteFrameHandle: RemoteFrameHandle, contextPC: BOOL]
RETURNS[bti: BodyIndex];
RemotePDToName: PROC[pd: RemotePD] RETURNS[Rope.ROPE];
RemoteSEDToName: PROC[sed: RemoteSED] RETURNS[Rope.ROPE];
RemoteGFHToName: PROC[gfh: RemoteGlobalFrameHandle]
RETURNS[Rope.ROPE];
ValidateRemoteRef: PROC [ref: RemoteRef];
raises InvalidRef if ref does not point to the top of a valid object, else returns.
RemoteSignalValues: PROC[tv: AMTypes.TypedVariable--catch Frame--]
RETURNS [message: CARDINAL, signal: PrincOps.SignalDesc, world: World];
AcquireRemoteBCDAndModule: PROC[gfh: RemoteGlobalFrameHandle]
RETURNS[BcdDefs.BcdBase, LoadState.ModuleIndex];
AcquireRemoteBCD:
PROC[world: World, incarnation: Incarnation, bcd: BcdDefs.BcdBase--remote--]
RETURNS[mappedBCD: BcdDefs.BcdBase--local--];
ReleaseRemoteBCD: PROC[bcd: BcdDefs.BcdBase];
GetRemoteEp: PROC[
pc: PrincOps.BytePC,
gf: RemoteGlobalFrameHandle,
stb: SymbolTableBase
]
RETURNS[ep: EVRange, start: PrincOps.BytePC];
GetRemotePc: PROC[gf: RemoteGlobalFrameHandle, i: EVRange] RETURNS [PrincOps.BytePC];
END.