IncrementalLoadImpl.mesa
Copyright Ó 1989, 1991, 1992 by Xerox Corporation. All rights reserved.
This is an interface to the implementation of IncrementalLoad.h
Peter B. Kessler, April 18, 1990 3:28 pm PDT
Michael Plass, November 26, 1991 5:08 pm PST
Willie-s, March 3, 1992 5:38 pm PST
DIRECTORY
IncrementalLoad;
IncrementalLoadImpl:
CEDAR
PROGRAM
EXPORTS IncrementalLoad ~ BEGIN OPEN IncrementalLoad;
IncrementalLoadFile:
PUBLIC
PROC [
fName: CString,
fOffset: Long ¬ 0,
fMagic: CARD32 ¬ 0,
refProc: CProc ¬ NilCProc,
refClientData: POINTER ¬ NIL,
defProc: CProc ¬ NilCProc,
defClientData: POINTER ¬ NIL,
commonProc: CProc ¬ NilCProc,
commonClientData: POINTER ¬ NIL,
patchSizeProc: CProc ¬ NilCProc,
patchSizeClientData: POINTER ¬ NIL
]
RETURNS [Error] ~ {
XRIncrementalLoadFileMachineCode:
PROC [
fName: CString,
fOffset: Long ¬ 0,
fMagic: CARD32 ¬ 0,
refProc: CProc ¬ NilCProc,
refClientData: POINTER ¬ NIL,
defProc: CProc ¬ NilCProc,
defClientData: POINTER ¬ NIL,
commonProc: CProc ¬ NilCProc,
commonClientData: POINTER ¬ NIL,
patchSizeProc: CProc ¬ NilCProc,
patchSizeClientData: POINTER ¬ NIL]
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR←ILLoadFile"
};
RETURN [XRIncrementalLoadFileMachineCode[fName, fOffset, fMagic, refProc, refClientData, defProc, defClientData, commonProc, commonClientData, patchSizeProc, patchSizeClientData]];
};
LockIncrementalLoadState:
PUBLIC
PROC [wait:
BOOL]
RETURNS [Error] ~ {
XRLockIncrementalLoadStateMachineCode:
PROC [wait:
BOOL]
RETURNS [Error] ~
TRUSTED
MACHINE
CODE {
"XR←LockIncrementalLoadState"
};
RETURN [XRLockIncrementalLoadStateMachineCode[wait: wait]];
};
UnlockIncrementalLoadState:
PUBLIC
PROC []
RETURNS [Error] ~ {
XRUnlockIncrementalLoadStateMachineCode:
PROC
RETURNS [Error] ~
TRUSTED
MACHINE
CODE {
"XR←UnlockIncrementalLoadState"
};
RETURN [XRUnlockIncrementalLoadStateMachineCode[]];
};
GetPrevFileEntry:
PUBLIC
PROC [ilfe: FileEntry]
RETURNS [FileEntry] ~ {
XRILGetPrevFileEntryMachineCode:
PROC [ilfe: FileEntry]
RETURNS [FileEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILGetPrevFileEntry"
};
RETURN [XRILGetPrevFileEntryMachineCode[ilfe: ilfe]];
};
IgnoredClasses: TYPE ~ MACHINE DEPENDENT {ignoreNone (0), ignoreInternal(1), ignoreExternal(2), last(LAST[CARDINAL])};
WantedTypes: TYPE ~ MACHINE DEPENDENT {first(0), wantAllTypes(LAST[CARDINAL])};
LookupSymEntry:
PUBLIC
PROC [sym: CString, externOnly:
BOOL]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByName:
PROC [ilse: SymEntry ←
NIL, pattern: CString ← sym, caseSensitive:
BOOL ←
TRUE, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ←
IF externOnly
THEN ignoreInternal
ELSE ignoreNone, numToSkip:
INT ← 1]
RETURNS [SymEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILGetMatchingSymEntryByName"
};
RETURN [XRILGetMatchingSymEntryByName[]];
};
LookupSymEntryByValue:
PUBLIC
PROC [val:
CARD32]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByValue:
PROCEDURE [ilse: SymEntry ←
NIL, symVal:
CARD32 ← val, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← ignoreNone, numToSkip:
INT ← 0]
RETURNS [SymEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILGetMatchingSymEntryByValue"
};
RETURN [XRILGetMatchingSymEntryByValue[]];
};
GetPrevSymEntry:
PUBLIC
PROC [se: SymEntry, externOnly:
BOOL]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByName:
PROC [ilse: SymEntry ←
se, pattern: CString ← NIL, caseSensitive:
BOOL ←
TRUE, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ←
IF externOnly
THEN ignoreInternal
ELSE ignoreNone, numToSkip:
INT ← 1]
RETURNS [SymEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILGetMatchingSymEntryByName"
};
RETURN [XRILGetMatchingSymEntryByName[]];
};
GetPrevSymEntryByValue:
PUBLIC
PROC [ilse: SymEntry]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByValue:
PROCEDURE [se: SymEntry ← ilse, val:
CARD32 ← 0, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← ignoreNone, numToSkip:
INT ← -1]
RETURNS [SymEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILGetMatchingSymEntryByValue"
};
RETURN [XRILGetMatchingSymEntryByValue[]];
};
GetNextSymEntryByValue:
PUBLIC
PROC [ilse: SymEntry]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByValue:
PROCEDURE [se: SymEntry ← ilse, val:
CARD32 ← 0, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← ignoreNone, numToSkip:
INT ← 1]
RETURNS [SymEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILGetMatchingSymEntryByValue"
};
RETURN [XRILGetMatchingSymEntryByValue[]];
};
AddVersionStamp:
PUBLIC
PROC [fe: FileEntry, vMagic, vLen:
CARD32, vStamp: CString] ~ {
XRAddVersionStampMachineCode:
PROC [fe: FileEntry, vMagic, vLen:
CARD32, vStamp: CString] ~
TRUSTED
MACHINE
CODE {
"XR←ILAddVersionStamp"
};
XRAddVersionStampMachineCode[fe, vMagic, vLen, vStamp];
};
AddVersionStampUsingPC:
PUBLIC
PROC [pc:
POINTER, vMagic, vLen:
CARD32, vStamp: CString]
RETURNS [FileEntry] ~ {
XRILAddVersionStampUsingPCMachineCode:
PROC [pc:
POINTER, vMagic, vLen:
CARD32, vStamp: CString]
RETURNS [FileEntry] ~
TRUSTED
MACHINE
CODE {
"XR←ILAddVersionStampUsingPC"
};
RETURN [XRILAddVersionStampUsingPCMachineCode[pc, vMagic, vLen, vStamp]];
};
SymIsInRecentLoad:
PUBLIC
PROC [se: SymEntry]
RETURNS [Bool] ~ {
XRSymIsInRecentLoadMachineCode:
PROC [se: SymEntry]
RETURNS [Bool] ~
TRUSTED
MACHINE
CODE {
"XR←ILSymIsInRecentLoad"
};
RETURN [XRSymIsInRecentLoadMachineCode[se: se]];
};
EnumerateUndefinedSymbols:
PUBLIC
PROC [func: CProc, clientData:
POINTER]~ {
XRILEnumerateUndefinedSymbolsMachineCode:
PROC [func: CProc, clientData:
POINTER] ~
TRUSTED
MACHINE
CODE {
"XR←ILEnumerateUndefinedSyms"
};
XRILEnumerateUndefinedSymbolsMachineCode[func, clientData];
};
CommitIncrementalLoad:
PUBLIC
PROC
RETURNS [Error] ~ {
XRCommitIncrementalLoadMachineCode:
PROC
RETURNS [Error] ~
TRUSTED
MACHINE
CODE {
"XR𡤌ommitIncrementalLoad"
};
RETURN [XRCommitIncrementalLoadMachineCode[]];
};
AbortIncrementalLoad:
PUBLIC
PROC [se: SymEntry]
RETURNS [Error] ~ {
XRAbortIncrementalLoadMachineCode:
PROC [se: SymEntry]
RETURNS [Error] ~
TRUSTED
MACHINE
CODE {
"XRortIncrementalLoad"
};
RETURN [XRAbortIncrementalLoadMachineCode[se: se]];
};
InitializeIncrementalLoader:
PUBLIC
PROC [fName: CString]
RETURNS [Error] ~ {
XRInitializeIncrementalLoaderMachineCode:
PROC [fName: CString]
RETURNS [Error] ~
TRUSTED
MACHINE
CODE {
"XR←InitializeIncrementalLoader"
};
RETURN [XRInitializeIncrementalLoaderMachineCode[fName: fName]];
};
END.