|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 9216 (0x2400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package V_I_Mem, seg_0509c6
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
-- Copyright 1988 Verdix Corporation ------------------------------------------------------------------------------ -- User interface to the memory management operations. Three distinct -- memory management methods are supported: -- --\x09Fixed pools -- Flex pools -- Heap pools -- -- For each type of pool, the following operations are provided: -- --\x09Creation -- Deletion -- Allocation -- Deallocation -- -- with the exception that deallocation is not provided for heap pools. ------------------------------------------------------------------------------ with System; use System; package V_I_Mem is pragma Suppress (All_Checks); pragma Suppress (Exception_Tables); pragma Not_Elaborated; -- The following declaration of the type MEM_ERROR_CODE defines the -- the possible error conditions which may be returned from the memory -- services. type Mem_Error_Code is (Mem_Error_Bad_Block, Mem_Error_Bad_Parameter, Mem_Error_Fatal, Mem_Error_Invalid_Overlap_Pool, Mem_Error_Invalid_Pool_Id, Mem_Error_No_Available_Pool, Mem_Error_No_Memory, Mem_Error_Normal); for Mem_Error_Code'Size use 8; -- Type declaration for a pool id. type Pool_Id is new Integer; -------------------------------------------------------------------------- -- Initialize memory services. This procedure must be called before -- any of the memory services. -------------------------------------------------------------------------- procedure Initialize_Services (Top_Of_Memory : in Address := +16#FFFF_FFFF#; Machine_Boundary : in Integer := Integer'Size; Granularity : in Integer := 16); -- TOP_OF_MEMORY -- -- TOP_OF_MEMORY specifies the highest memory location addressable -- by the target/host. -- -- The default TOP_OF_MEMORY is 16#FFFF_FFFF#. -- -- MACHINE_BOUNDARY -- -- MACHINE_BOUNDARY specifies the CPU's natural boundary -- in BITS. This is an extremely important parameter on machines -- that impose specific bit alignment for certain data types. -- -- The default MACHINE_BOUNDARY is integer'size. -- -- GRANULARITY -- -- GRANULARITY controls memory fragmentation within -- all the flex memory pools. These pools provide memory -- allocation in variably-sized blocks. The value is specified -- in BYTES and causes all allocation requests to be rounded -- up to the nearest multiple of this value. -- -- The default GRANULARITY is 16 bytes. -------------------------------------------------------------------------- -- Fixed Pools -------------------------------------------------------------------------- procedure Create_Fixed_Pool (Base_Address : in Address; Pool_Size : in Natural; Block_Size : in Natural; Pool : out Pool_Id; Except_Status : out Mem_Error_Code); procedure Allocate_Fixed_Block (Pool : in Pool_Id; Block_Address : out Address; Except_Status : out Mem_Error_Code); procedure Deallocate_Fixed_Block (Block_Address : in Address; Except_Status : out Mem_Error_Code); procedure Fixed_Block_Size (Pool : in Pool_Id; Block_Size : out Natural; Status : out Mem_Error_Code); procedure Destroy_Fixed_Pool (Pool : in Pool_Id; Except_Status : out Mem_Error_Code); -------------------------------------------------------------------------- -- Flex Pools -------------------------------------------------------------------------- procedure Create_Flex_Pool (Base_Address : in Address; Pool_Size : in Integer; Pool : out Pool_Id; Except_Status : out Mem_Error_Code); procedure Allocate_Flex_Block (Pool : in Pool_Id; Block_Size : in Integer; Block_Address : out Address; Except_Status : out Mem_Error_Code); procedure Deallocate_Flex_Block (Block_Address : in Address; Except_Status : out Mem_Error_Code); procedure Destroy_Flex_Pool (Pool : in Pool_Id; Except_Status : out Mem_Error_Code); -------------------------------------------------------------------------- -- Heap Pools -------------------------------------------------------------------------- procedure Create_Heap_Pool (Base_Address : in Address; Pool_Size : in Natural; Pool : out Pool_Id; Status : out Mem_Error_Code); procedure Allocate_Heap_Block (Pool : in Pool_Id; Block_Size : in Natural; Block_Address : out Address; Status : out Mem_Error_Code); procedure Destroy_Heap_Pool (Pool : in Pool_Id; Except_Status : out Mem_Error_Code); private pragma Interface (Ada, Initialize_Services); pragma Interface_Name (Initialize_Services, "__MEM_INITIALIZE_SERVICES"); pragma Interface (Ada, Create_Fixed_Pool); pragma Interface_Name (Create_Fixed_Pool, "__MEM_CREATE_FIXED_POOL"); pragma Interface (Ada, Allocate_Fixed_Block); pragma Interface_Name (Allocate_Fixed_Block, "__MEM_ALLOCATE_FIXED_BLOCK"); pragma Interface (Ada, Deallocate_Fixed_Block); pragma Interface_Name (Deallocate_Fixed_Block, "__MEM_DEALLOCATE_FIXED_BLOCK"); pragma Interface (Ada, Fixed_Block_Size); pragma Interface_Name (Fixed_Block_Size, "__MEM_FIXED_BLOCK_SIZE"); pragma Interface (Ada, Destroy_Fixed_Pool); pragma Interface_Name (Destroy_Fixed_Pool, "__MEM_DESTROY_FIXED_POOL"); pragma Interface (Ada, Create_Flex_Pool); pragma Interface_Name (Create_Flex_Pool, "__MEM_CREATE_FLEX_POOL"); pragma Interface (Ada, Allocate_Flex_Block); pragma Interface_Name (Allocate_Flex_Block, "__MEM_ALLOCATE_FLEX_POOL"); pragma Interface (Ada, Deallocate_Flex_Block); pragma Interface_Name (Deallocate_Flex_Block, "__MEM_DEALLOCATE_FLEX_BLOCK"); pragma Interface (Ada, Destroy_Flex_Pool); pragma Interface_Name (Destroy_Flex_Pool, "__MEM_DESTROY_FLEX_POOL"); pragma Interface (Ada, Create_Heap_Pool); pragma Interface_Name (Create_Heap_Pool, "__MEM_CREATE_HEAP_POOL"); pragma Interface (Ada, Allocate_Heap_Block); pragma Interface_Name (Allocate_Heap_Block, "__MEM_ALLOCATE_HEAP_BLOCK"); pragma Interface (Ada, Destroy_Heap_Pool); pragma Interface_Name (Destroy_Heap_Pool, "__MEM_DESTROY_HEAP_POOL"); end V_I_Mem;
nblk1=8 nid=0 hdr6=10 [0x00] rec0=22 rec1=00 rec2=01 rec3=090 [0x01] rec0=16 rec1=00 rec2=02 rec3=022 [0x02] rec0=19 rec1=00 rec2=03 rec3=06c [0x03] rec0=17 rec1=00 rec2=04 rec3=018 [0x04] rec0=15 rec1=00 rec2=05 rec3=074 [0x05] rec0=16 rec1=00 rec2=06 rec3=092 [0x06] rec0=12 rec1=00 rec2=07 rec3=056 [0x07] rec0=0a rec1=00 rec2=08 rec3=000 tail 0x21758065e878e79ec2ce7 0x42a00088462060003