|
|
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 - metrics - download
Length: 9216 (0x2400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package V_I_Mem, seg_04ce0d
└─⟦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 0x2175422f0874f7bfde9c6 0x42a00088462060003