DIRECTORY UnixTypes; IncrementalLoad: CEDAR DEFINITIONS ~ { unsigned: TYPE ~ CARD32; int: TYPE ~ INT32; charStar: TYPE ~ UnixTypes.CHARPtr; bool: TYPE ~ BOOLEAN; sizet: TYPE ~ int; timet: TYPE ~ UnixTypes.Time; caddrt: TYPE ~ charStar; XRILError: TYPE ~ POINTER TO XRILErrorRep; nullXRILError: XRILError ~ NIL; XRILErrorRep: TYPE ~ RECORD [ ilefatal: bool, -- all incr loads since last commit are aborted ilecode: int, -- > 0 ==> value from Errno.h ilemsg: charStar -- human-readable ]; XRLockIncrementalLoadState: PROCEDURE [wait: bool] RETURNS [XRILError]; XRUnlockIncrementalLoadState: PROCEDURE [] RETURNS [XRILError]; XRILFileEntry: TYPE ~ POINTER TO XRILFileEntryRep; nullXRILFileEntry: XRILFileEntry ~ NIL; XRILFileEntryRep: TYPE ~ RECORD [ ilfeseqNum: unsigned, ilfecommitPoint: bool, ilfefName: charStar, ilfefOffset: unsigned, ilfefMagic: unsigned, ilfefSize: sizet, ilfefMTime: timet, ilfevMagic: unsigned, ilfevLen: unsigned, ilfevStamp: charStar, ilferdrData: caddrt, ilferdrDataBytes: unsigned, ilfepAddr: caddrt, ilfepBytes: unsigned, ilfetAddr: caddrt, ilfetBytes: unsigned, ilfedAddr: caddrt, ilfedBytes: unsigned, ilfebAddr: caddrt, ilfebBytes: unsigned, ilfecAddr: caddrt, ilfecBytes: unsigned ]; XRILGetPrevFileEntry: PROCEDURE [ilfe: XRILFileEntry] RETURNS [XRILFileEntry]; XRILAddVersionStamp: PROCEDURE [ ilfe: XRILFileEntry, vMagic: unsigned, vLen: unsigned, vStamp: caddrt] RETURNS []; XRILAddVersionStampUsingPC: PROCEDURE [ pc: caddrt, vMagic: unsigned, vLen: unsigned, vStamp: charStar] RETURNS [XRILFileEntry]; XRILSymEntry: TYPE ~ POINTER TO XRILSymEntryRep; nullXRILSymEntry: XRILSymEntry ~ NIL; XRILSymEntryRep: TYPE ~ RECORD [ ilsename: charStar, ilsetype: unsigned, ilsevalue: unsigned, ilsesize: unsigned, ilseilfe: XRILFileEntry ]; ilsetypeEnum: TYPE ~ MACHINE DEPENDENT { ILSEUNDF (00H), -- undefined ILSEEXT (01H), -- external bit, or'ed in ILSEABS (02H), -- absolute ILSETEXT (04H), -- text ILSEDATA (06H), -- data ILSEBSS (08H), -- bss ILSETYPE (01EH) -- mask for all the type bits }; ilsetypeExtrasEnum: TYPE ~ MACHINE DEPENDENT { ILSEPATCH (01CH), -- patch area address ILSEMODULE (01EH) -- module name }; XRILLookupSymEntry: PROCEDURE [sym: charStar, externOnly: bool] RETURNS [XRILSymEntry]; XRILLookupSymEntryByValue: PROCEDURE [val: unsigned] RETURNS [XRILSymEntry]; XRILGetPrevSymEntry: PROCEDURE [ilse: XRILSymEntry, externOnly: bool] RETURNS [XRILSymEntry]; XRILGetPrevSymEntryByValue: PROCEDURE [ilse: XRILSymEntry] RETURNS [XRILSymEntry]; XRILGetNextSymEntryByValue: PROCEDURE [ilse: XRILSymEntry] RETURNS [XRILSymEntry]; }. n IncrementalLoad.mesa Copyright Σ 1989 by Xerox Corporation. All rights reserved. Peter B. Kessler, September 5, 1989 10:15:00 am PDT This is a translation of xrhome/2_6.X/INCLUDE/xr/IncrementalLoad.h Types that should be in UnixTypes.h. Error result returned from many IL calls. NIL means 'ok' ... Incremental Load State Locking. Data is guaranteed to be persistent only while lock is held. Try to acquire lock on load state. The `wait' parameter says whether to block until it's available. Waiting is abortable. Result.ile_code may be ETIMEDOUT or XR_EABORTED. A successful call must be followed (eventually) by a call to UnlockIncrementalLoadState. Release lock on load state. Result.ile_code may be EINVAL if lock is not held. Incremental Load File record. file info version stamp (supplied by installation proc) file type specific data (optionally supplied by reader proc) patch, text, data, bss, and common segments Return ILFileEntries in reverse order of loading. Return most-recently-loaded entry if ilfe is NIL. Return NIL at end of sequence. To be called by an installation proc to record its version stamp. The vStamp pointer is stored into the XR_ILFileEntry associated with pc, without being copied; thus, it can't point to a buffer in a local frame. BEWARE: these procs don't do any locking. Concurrent calls that add version stamps for different files don't interfere with one another. Load state symbol lookup Load state symbol lookup PCR retains all external or text symbols. All these symbols are accessible by name. Only relocatable (not absolute) symbols are accessible by value. Return XR_ILSymEntry for (most recent instance of) sym. Note sym may be undefined (in symbol table because it has been referenced but not yet defined). Return NIL if no instance of sym exists in load state. If externOnly is true, symbols that aren't extern are ignored. Return XR_ILSymEntry for most recently defined text, data or bss (but not absolute) symbol of maximum value not greater than val. Note: symbol will not be undefined. Return XR_ILSymEntry for next most recent definition of symbol corresponding to ilse. Return NIL if no more definitions. If externOnly is true, symbols that aren't extern are ignored. Return XR_ILSymEntry for prev symbol def by value. Return NIL if no more definitions. Return XR_ILSymEntry for next symbol def by value. Return NIL if no more definitions. Κί•NewlineDelimiter – "cedar" style™codešœ™Kšœ Οrœ1™K˜—š‘œž œžœ˜MK– PostfixXeroxCharCodeswšœžœx™K™#K˜—š‘œž œ)žœ˜^K– PostfixXeroxCharCodesKšœžœL™UK™"K™>K˜—š‘œž œžœ˜SK™2K™"K˜—š‘œž œžœ˜SK™2K™"K˜——L˜K™——…— (u