DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T V ┃
Length: 5578 (0x15ca) Types: TextFile Names: »V«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2 └─ ⟦77aa8350c⟧ »DATA« └─⟦f794ecd1d⟧ └─⟦24d1ddd49⟧ └─⟦this⟧
-- The use of this system is subject to the software license terms and -- conditions agreed upon between Rational and the Customer. -- -- Copyright 1988 by Rational. -- -- RESTRICTED RIGHTS LEGEND -- -- Use, duplication, or disclosure by the Government is subject to -- restrictions as set forth in subdivision (b)(3)(ii) of the Rights in -- Technical Data and Computer Software clause at 52.227-7013. -- -- -- Rational -- 3320 Scott Boulevard -- Santa Clara, California 95054-3197 -- -- PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL; -- USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION -- IS STRICTLY PROHIBITED. THIS MATERIAL IS PROTECTED AS -- AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF -- 1976. CREATED 1988. ALL RIGHTS RESERVED. -- -- with Runtime_Ids; with System_Definitions; package Storage_Management is --************************************************************************ --* --* ABSTRACT: --* Storage management for an access collection. Allocate, deallocate, --* and extend storage as the user requests. --* The user should give the correct sizes at all times except --* when deallocating an entire access collection. --* --************************************************************************ subtype System_Address is System_Definitions.Address; subtype Address_Ref is System_Definitions.Address_Ref; -- Collection creation flags Use_Default_Chunk_Size : constant := -1; Use_Descriptor_Or_Null_Size : constant := 0; -- a skin for Create_Collection for the unsophisticated. function Allocate_Collection (Units : Integer; Extend : Boolean) return System_Address; -- allocate an access collection of at least, size "units" and -- return its address; -- Extend indicates whether we want automatic collection extension -- if collection subsequently becomes exhausted type Collection_Attributes is range 0 .. 2 ** 7 - 1; -- Collection attributes currently supported: No_Coalesce_And_No_Extend : constant Collection_Attributes := 0; Extend_And_No_Coalesce : constant Collection_Attributes := 1; Coalesce_And_No_Extend : constant Collection_Attributes := 2; Coalesce_And_Extend : constant Collection_Attributes := 3; Max_Collection_Attributes : constant Collection_Attributes := 3; function Create_Collection (Units : Integer; Attributes : Collection_Attributes := Coalesce_And_Extend; Extension_Size : Integer := 0) return System_Address; -- allocate an access collection of at least, size "units" and -- return its address. -- No_Coalesce indicates the free list should not be coalesced when -- objects are deallocated. Useful if all objects are same size. Will -- result in lost storage if they are not. -- Extend indicates whether we want automatic collection extension -- if collection subsequently becomes exhausted. -- Extension_Size indicates the size of the extension if the collection -- is extensible. 0 means use the default extension size. function Allocate_Fixed_Cell (Units : Integer; Collection : System_Address) return System_Address; -- allocate space for an item of exact size "units" in the access -- collection at "collection", returning the object's address. -- Note that the size of the item is not saved, so the storage manager -- has no subsequent idea of size function Collection_Size (Cp : System_Address) return Integer; -- Implements the 'STORAGE_SIZE attribute for an access type. -- Takes as param the collection pointer, and returns the number -- of storage units currently in the collection procedure Deallocate_Collection (Addr : in out Address_Ref); -- deallocate an entire access collection list starting at Addr.all -- (size is known to storage manager) -- postcondition: Addr.all = null procedure Deallocate_Fixed_Cell (Units : Integer; Collection : System_Address; Cell : Address_Ref); -- deallocate space of exact size Units in access collection list -- Collection for the item at address Cell.all; -- postcondition: Cell.all = null private pragma Export_Function (Allocate_Collection, "__ALLOCATE_COLLECTION"); pragma Suppress (Elaboration_Check, Allocate_Collection); pragma Export_Function (Create_Collection, "__CREATE_COLLECTION"); pragma Suppress (Elaboration_Check, Create_Collection); pragma Export_Function (Allocate_Fixed_Cell, "__ALLOCATE_FIXED_CELL"); pragma Suppress (Elaboration_Check, Allocate_Fixed_Cell); pragma Export_Function (Collection_Size, "__COLLECTION_SIZE"); pragma Suppress (Elaboration_Check, Collection_Size); pragma Export_Procedure (Deallocate_Collection, "__DEALLOCATE_COLLECTION"); pragma Suppress (Elaboration_Check, Deallocate_Collection); pragma Export_Procedure (Deallocate_Fixed_Cell, "__DEALLOCATE_FIXED_CELL"); pragma Suppress (Elaboration_Check, Deallocate_Fixed_Cell); end Storage_Management; pragma Export_Elaboration_Procedure ("__STORAGE_MGMT_SPEC_ELAB"); pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit, Elab_Routine_Number => Runtime_Ids.Internal);