DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦739d7b3e2⟧ TextFile

    Length: 7393 (0x1ce1)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦904abe96e⟧ 
            └─⟦this⟧ 

TextFile


-- Copyright 1988 Verdix Corporation

------------------------------------------------------------------------------
-- User interface to the memory management operations.  Three distinct
-- memory management methods are supported:
--
--	Fixed pools
--  Flex pools
--  Heap pools
--
-- For each type of pool, the following operations are provided:
--
--	Creation
--  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