-- VMMgrPack.pack
-- Last edited by:
-- September 15, 1982 6:18 pm Levin Removed AddressFaultProcess.
-- 4-Feb-82 10:41:54 Levin Added GetMappingSpaceDesc to SpaceStatusOps.
-- 23-Nov-81 17:37:21 Levin Added ResetGrain to SpaceMapLogging.
-- Yokota March 23, 1981 11:13 AM ValidSpaceOrSwapUnit in HierarchyImpl and LongPointer, LongPointerFromPage in SpaceImplA are moved from SpaceMisc to SpaceOpsCommon.
-- Yokota March 6, 1981 1:31 PM Move Code from SpaceCodeHacking PACK to SpaceStatusOps PACK.
-- Yokota March 4, 1981 5:22 PM Add Activate(Deactivate)Proc, Activate(Deactivate)SwapUnit to SpaceStatusOps PACK.
-- Knutsen February 25, 1981 3:16 PM Add AddressFaultProcess to SpaceMisc pack.
-- Knutsen February 18, 1981 12:39 PM EnterSpace moved into new code pack VMMgrResident.
-- Gobbel January 31, 1981 11:33 AM Moved frame packs into PilotKernelFrames.pack.
-- January 28, 1981 Knutsen Renamed: WriteFaultProcess ← WriteProtectFaultProcess, CreateAny ← CreateInternal, DeleteAny ← DeleteInternal, VMHelperProcess ← VMMHelperProcess. Moved: VMHelperProcess to SpaceImplB, EnterSpace to SpaceImplA.
-- January 23, 1981 Knutsen Deleted *WriteProtectTrap, JoinTransaction, SpaceForCode, MaxIntervalForCode, ReleaseDefaultWindow. Added WriteProtectFaultProcess, MakeCodeResident, MakeCodeSwappable, Code. Moved CreateForCode to SpaceCreate pack.
-- January 13, 1981 3:43 PM Gobbel Created SpaceMapLogging pack.
-- December 4, 1980 12:59 PM Luniewski Moved JoinTransaction, ReleaseDefaultWindow to SpaceOpsCommon.
VMMgr: SEGMENT =
BEGIN
VMMHelperProcess: CODE PACK =
BEGIN
HierarchyImpl [Touch, LoadDesc];
ProjectionImpl [Touch, Get];
SpaceImplB [VMHelperProcess];
STLeafImpl [Close, Open];
STreeImpl [Get, KeyFromPDesc, SearchLeaf, SearchRoot, Update, UpdateRoot];
END;
SpaceOpsCommon: CODE PACK =
BEGIN
-- we include the operations needed to get space handles from long pointers here as
-- most clients will keep pointers to spaces instead of space handles, thus
-- necessitating a translation before calling into the Space operations. GetAttribute
-- is included here: 1) it fits, and 2) in the development environment, it is frequently
-- called from HeapImpl.SpaceFromLongPointer which is called from HeapImpl.PruneMDS
-- which is frequently called. The presence of GetAttributes here => FindFirstWIthin
-- must also be here.
HierarchyImpl [GetDescriptor, FindFirstWithin, GetInterval, Update,
ValidSpaceOrSwapUnit];
ProjectionImpl [ForceOut, TranslateLevel];
SpaceImplA [ApplyToInterval, ForAllRegions, GetAttributes, GetHandle,
LongPointer, LongPointerFromPage, PageFromLongPointer];
SpaceImplB [GetSpaceDesc, ProcessWindow];
END;
SpaceStatusOps: CODE PACK =
{ SpaceImplA [Activate, ActivateProc, ActivateSwapUnit, ApplyToSpace, Code,
Deactivate, DeactivateProc, DeactivateSwapUnit, ForceOut, Kill];
SpaceImplB [MakeReadOnly, MakeWritable, GetMappingSpaceDesc] };
SpaceMap: CODE PACK =
{ SpaceImplB [Map];
STLeafImpl [AllocateWindow] };
SpaceUnmap: CODE PACK =
{ SpaceImplB [Unmap, UnmapInternal];
STLeafImpl [DeallocateWindow] }; -- Also used by Space.Remap
SpaceCreate: CODE PACK =
BEGIN
HierarchyImpl [Insert];
ProjectionImpl [Split];
SpaceImplA [
Create, CreateAligned, CreateForCode, CreateUniformSwapUnits, CreateAny];
STLeafImpl [Create];
STreeImpl [AllocateRoot, ExpandRoot, Insert];
END;
SpaceDelete: CODE PACK =
BEGIN
HierarchyImpl [Delete];
ProjectionImpl [DeleteSwapUnits, Merge];
SpaceImplA [Delete, DeleteSwapUnits, DeleteAny];
STLeafImpl [Delete];
STreeImpl [Delete];
END;
SpaceCopying: CODE PACK =
{ SpaceImplB [CopyIn, CopyOut, GetCopyInfo] };
SpaceTransactions: CODE PACK =
{ SpaceImplB [ReleaseFromTransaction, WriteFaultProcess] };
SpaceRemap: CODE PACK = { SpaceImplB [Remap] };
SpaceCodeHacking: CODE PACK =
{ SpaceImplA [MakeCodeResident, MakeCodeSwappable,
MakeGlobalFrameResident, MakeGlobalFrameSwappable,
MakeProcedureResident, MakeProcedureSwappable, MakeResident,
MakeSwappable] };
SpaceMapLogging: CODE PACK = { MapLogImpl [ResetGrain, WriteLog1] };
SpaceMisc: CODE PACK =
{ SpaceImplA
[GetWindow, Pointer, VMPageNumber] };
VMMgrInitialization: CODE PACK =
BEGIN
HierarchyImpl [MAIN];
MapLogImpl [Initialize, MAIN];
ProjectionImpl [MAIN];
SpaceImplA [InitializeInternal, InitializeSpace, MAIN];
SpaceImplB [InitializeSpaceImplB, MAIN];
STLeafImpl [AllocateMapLogFile, InitVMMgrStore, InitSTLeaf, MAIN];
STreeImpl [Initialize, MAIN];
VMMControl [CreateSpace, FillHierarchyAndProjection, InitializeVMMgr,
IsDiagnosticPilot, MAIN];
END;
VMMgrResident: CODE PACK = { SpaceImplA [EnterSpace] };
-- Contrary to usual practice, this resident code pack is placed *last*. This is because it is not required and not desired to pin the entry vector of SpaceImplA. The only stuff that *must* be resident is the code starting from when EnterSpace releases the monitor lock and ending when it resets its priority to the caller's level. (See notes in SpaceImplA.EnterSpace.)
END; --VMMgrPack.pack--