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

⟦6acb744cd⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, seg_03bdb2

Derivation

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

E3 Source Code




-- Copyright 1986, 1987, 1988, 1989 Verdix Corporation

-- Interface to library and kernel memory support

WITH System;
WITH V_I_Types;
PACKAGE V_I_Alloc IS

   PRAGMA Suppress (All_Checks);
   PRAGMA Suppress (Exception_Tables);
   PRAGMA Not_Elaborated;

------------------------------------------------------------------------------
-- The following routines are called directly by code generated by the VADS
-- compiler.  The aa_global_new routine is called to allocate for the NEW
-- allocator of Ada.  Likewise the aa_aligned new is called when a NEW
-- is done on a record with an alignment clause.  The aa_global_free
-- routine is called from unchecked_deallocation.  The aa_local_new routine
-- is called for the NEW allocators for any access type that is declared local
-- to a subprogram and is given a collection size; aa_local_free is called for
-- unchecked_deallocation of entities declared local to a subprogram.  See
-- VADS User manual for lheap meaning and exact usage.  extend_intr_heap
-- is called when a program needs to allocate more fixed size blocks for the
-- interrupt heap (not available in SLIM_MALLOC).  get_intr_heap_size is
-- called when a program wants to find out how many of the fixed sized blocks
-- remain.
------------------------------------------------------------------------------
   FUNCTION  Aa_Global_New (Size : IN V_I_Types.Alloc_T) RETURN System.Address;
   FUNCTION  Aa_Aligned_New
               (Size, Dope_Size : IN V_I_Types.Alloc_T; Alignment : IN Integer)
               RETURN System.Address;
   PROCEDURE Aa_Global_Free (A : IN System.Address);
   FUNCTION  Aa_Local_New (Size : IN V_I_Types.Alloc_T; Lheap : System.Address)
                         RETURN System.Address;
   PROCEDURE Aa_Local_Free (A : IN System.Address; Lheap : System.Address);
   PROCEDURE Extend_Intr_Heap (Extension : IN Integer);
   FUNCTION  Get_Intr_Heap_Size RETURN Integer;

------------------------------------------------------------------------------
-- User interface to the kernel's memory allocation services.
--
-- Note: the compiler does NOT generate calls to these routines,
-- but instead calls AA_GLOBAL_NEW and AA_GLOBAL_FREE.  These calls
-- reach the kernel's user-accessible memory allocators, and are typically
-- used as a backstop to get more memory in large chunks.
--
-- Note: krn_aa_global_new returns system.no_addr if allocation
-- wasn't possible.  It doesn't raise a STORAGE_ERROR exception.
------------------------------------------------------------------------------

   FUNCTION Krn_Aa_Global_New (Size : V_I_Types.Alloc_T) RETURN System.Address;
   PROCEDURE Krn_Aa_Global_Free (A : System.Address);

   -- Extend the size of the current task's stack. Note, this may only
   -- be applicable to the main program's stack. If unable to extend stack,
   -- STORAGE_ERROR exception is raised.
   PROCEDURE Extend_Stack;

PRIVATE
   PRAGMA Interface (Ada, Aa_Global_New);
   PRAGMA Interface_Name (Aa_Global_New, "AA_GLOBAL_NEW");
   PRAGMA Interface (Ada, Aa_Aligned_New);
   PRAGMA Interface_Name (Aa_Aligned_New, "AA_ALIGNED_NEW");
   PRAGMA Interface (Ada, Aa_Global_Free);
   PRAGMA Interface_Name (Aa_Global_Free, "AA_GLOBAL_FREE");
   PRAGMA Interface (Ada, Aa_Local_New);
   PRAGMA Interface_Name (Aa_Local_New, "AA_LOCAL_NEW");
   PRAGMA Interface (Ada, Aa_Local_Free);
   PRAGMA Interface_Name (Aa_Local_Free, "AA_LOCAL_FREE");
   PRAGMA Interface (Ada, Extend_Intr_Heap);
   PRAGMA Interface_Name (Extend_Intr_Heap, "__EXTEND_INTR_HEAP");
   PRAGMA Interface (Ada, Get_Intr_Heap_Size);
   PRAGMA Interface_Name (Get_Intr_Heap_Size, "__GET_INTR_HEAP_SIZE");
   PRAGMA Interface (Ada, Krn_Aa_Global_New);
   PRAGMA Interface_Name (Krn_Aa_Global_New, "__AA_GLOBAL_NEW");
   PRAGMA Interface (Ada, Krn_Aa_Global_Free);
   PRAGMA Interface_Name (Krn_Aa_Global_Free, "__AA_GLOBAL_FREE");
   PRAGMA Interface (Ada, Extend_Stack);
   PRAGMA Interface_Name (Extend_Stack, "__EXTEND_STACK");
END V_I_Alloc;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=18 rec1=00 rec2=01 rec3=044
        [0x01] rec0=11 rec1=00 rec2=02 rec3=04c
        [0x02] rec0=00 rec1=00 rec2=06 rec3=008
        [0x03] rec0=15 rec1=00 rec2=03 rec3=048
        [0x04] rec0=13 rec1=00 rec2=04 rec3=016
        [0x05] rec0=02 rec1=00 rec2=05 rec3=000
    tail 0x21739b8828565744b5e89 0x489e0066482863c01