SafeStoragePrivate.Mesa: An internal Cedar system interface
Last Modified On June 17, 1983 1:29 pm by Paul Rovner
DIRECTORY
RTQuanta USING[QuantumCount, QuantumIndex],
SafeStorage USING[Type];
SafeStoragePrivate: DEFINITIONS =
BEGIN OPEN RTQuanta, SafeStorage;
Variables
PrivateHeapZone: UNCOUNTED ZONE;
PermanentPageZone: UNCOUNTED ZONE;
use instead of GetPermanentDataPages if ZONE syntax is desired
PROCs
For wholesale storage management
GetPermanentDataPages:
PROC[nPages: CARDINAL, createUniformSwapUnits: BOOLTRUE]
RETURNS[LONG POINTER];
GetCollectibleQuanta: PROC[desired, needed: QuantumCount]
RETURNS[qi: QuantumIndex, qc: QuantumCount];
GetDataPagesForGCTables: PROC RETURNS[LONG POINTER];
NotifyAllocatorReady: PROC;
IsAllocatorReady: PROC RETURNS[BOOL];
For reference-counted assignment
AssignRef: PROC[refNew: REF ANY, ptrRef: LONG POINTER];
AssignRefNew: PROC[refNew: REF ANY, ptrRef: LONG POINTER];
For clever clients
NewObject: PROC[type: Type, size: CARDINAL, zone: ZONENIL]
RETURNS[REF ANY]; -- CLEARED
ValidateRef: PROC [ref: REF ANY];
raises InvalidRef if ref does not point to the top of a valid object, else returns.
DisableReferenceCounting: PROC; -- TandS will try next time around
ERRORs
OutOfOverflowTable: ERROR;
InvalidRef: ERROR[ref: REF ANY];
InsufficientVM: SIGNAL;
END.