|
|
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: 13312 (0x3400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package V_Usr_Conf_I, seg_04ce27
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--
-- VERDIX CORPORATION (C) COPYRIGHT 1988, 1989
-- 14130-A Sullyfield Circle Proprietary Information
-- Chantilly, Virginia 22021 Not to be Disclosed
--
-- FILE: V_USR_CONF_I.A
--
-- UNIT: VADS Interface for Configuring A User Program for
-- VADS_MICRO/MC68020.
--
-- PURPOSE: This package provides the interface to VADS used by the
-- the package V_USR_CONF. It contains types, objects,
-- and subprograms used to convey configuration information to and
-- from VADS.
--
-- This package consists of the following type definitions,
-- constants and subprogram interfaces:
-- 1. Small block sizes table
--\x09\x09\x09 2. Memory allocation configuration table
-- 3. Configuration table
-- 4. Misc user program variables
-- 5. Ada RTS init
-- 6. Ada exit subprogram
--
-- NOTES: Do not modify this package.
--
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
with System;
use System;
with Ada_Krn_Defs;
with Link_Block;
with V_I_Types;
with V_I_Cifo;
with Language;
use Language;
with Unchecked_Conversion;
package V_Usr_Conf_I is
pragma Suppress (All_Checks);
pragma Suppress (Exception_Tables);
pragma Not_Elaborated;
pragma Local_Access;
subtype Alloc_T is V_I_Types.Alloc_T;
------------------------ #i1: Small Block Sizes Table --------------------------
type Small_Block_Sizes_T is array (Positive range <>) of Alloc_T;
----------------- #i2: Memory Allocation Configuration Table -------------------
type Allocation_Strategy_T is (First_Fit, Best_Fit);
type Mem_Alloc_Conf_Table_T is
record
Min_Size : Alloc_T;
-- for larger objects, gives the size at
-- which an over-large space will be broken
-- into a perfect fit and a new free
-- storage block. Should be set to
-- smallest block one ever expects to
-- allocate and should never be larger
-- than the smallest block in the
-- small_block_sizes list table
Num_Small_Block_Sizes : Integer;
-- specifies the number of elements in
-- the small block sizes table.
Small_Block_Sizes_Address : Address;
-- starting location of the small block
-- sizes table.
Min_List_Length : Integer;
-- specifies the minimum list length
-- of a small blocks list to keep the
-- allocator from coalescing blocks off
-- of the list. (Used for tuning
-- performance)
Intr_Obj_Size : Alloc_T;
-- specifies fixed size of
-- blocks to be allocated when a "new" is
-- performed from an interrupt handler
Initial_Intr_Heap : Integer;
-- specifies number of blocks to be
-- pre-allocated for allocation from
-- an interrupt handler.
Allocation_Strategy : Allocation_Strategy_T;
-- specifies aa_global_new's strategy
-- to be used when choosing a block
-- from the free list.
end record;
-------------------------- #i3: Configuration Table ----------------------------
type Configuration_Table_T is
record
Main_Task_Stack_Size : Natural;
-- Size of main subprogram's stack. Stack
-- size excludes room at bottom for
-- exception handling.
Default_Task_Stack_Size : Natural;
-- Default size for each task's stack
-- area. This value is overridden
-- via the "for T'STORAGE_SIZE use ###"
-- length clause.
Exception_Stack_Size : Natural;
-- Space set aside below the bottom
-- of the task stack for exception
-- unwinding.
Idle_Stack_Size : Natural;
-- Size of stack for the idle task.
Signal_Task_Stack_Size : Natural;
-- Size of stack for tasks created
-- for doing rendezvous with
-- interrupt entries.
Fast_Rendezvous_Enabled : Boolean;
-- When true, if the acceptor task
-- is already waiting, then, the
-- rendzvous is executed in the context
-- of the caller task.
Wait_Stack_Size : Natural;
-- For a fast rendezvous, the acceptor
-- saves it register context, switches
-- to a wait stack and waits. Eventually,
-- the caller task restores and uses the
-- acceptor's saved register context.
-- This parameter
-- specifies how much stack is needed
-- for when the acceptor switches from
-- its normal task stack to a special
-- stack it can use to call a kernel
-- service to block itself.
--
-- If fast_rendezvous_enabled == FALSE,
-- then, not used.
Heap_Extend : Alloc_T;
-- the minimum number of storage units
-- requested from get_heap_memory_callout
Get_Heap_Memory_Callout : Address;
-- is the address of the routine
-- called when more memory is needed
-- by the underlying allocator for
-- "new" allocations
Mem_Alloc_Conf_Table_Address : Address;
-- starting location of the table that
-- specifies memory allocation
-- configuration and tuning parameters
-- (can be user defined)
Default_Task_Attributes : Ada_Krn_Defs.Task_Attr_T;
-- Default task attributes to be
-- passed to underlying OS at task
-- create.
Main_Task_Attr_Address : Address;
-- is the address of the task attributes
-- to be used for the main task. Set
-- to NO_ADDR to use the default task
-- attributes.
Signal_Task_Attr_Address : Address;
-- is the address of the task attributes
-- to be used for the tasks created to
-- rendezvous with interrupt entries.
-- Set to NO_ADDR to use the default task
-- attributes.
Masters_Mutex_Attr_Address : Address;
-- is the address of the mutex attributes
-- to be used to initialize the Ada
-- kernel's master mutex.
--
-- Set to NO_ADDR to use the default
-- mutex attributes.
Mem_Alloc_Mutex_Attr_Address : Address;
-- is the address of the mutex attributes
-- to be used to initialize the mutex
-- used for mutual exclusion during
-- memory allocation.
--
-- Set to NO_ADDR to use the default
-- mutex attributes.
Ada_Io_Mutex_Attr_Address : Address;
-- is the address of the mutex attributes
-- to be used to initialize the mutex
-- used for mutual exclusion during
-- Ada I/O operations.
--
-- Set to NO_ADDR to use the default
-- mutex attributes.
Old_Style_Max_Intr_Entry : Address;
-- For backwards compatibility, if the
-- address in the interrupt entry
-- "for use at" clause is <=
-- OLD_STYLE_MAX_INTR_ENTRY, then, it
-- contains the interrupt vector value and
-- not a pointer to the
-- ada_krn_defs.intr_entry_t record.
-- Setting OLD_STYLE_MAX_INTR_ENTRY to 0
-- disables the old way of interpretation.
end record;
type A_Configuration_Table_T is access Configuration_Table_T;
function To_A_Configuration_Table_T is
new Unchecked_Conversion (Address, A_Configuration_Table_T);
--------------------- #i4: Misc User Program Variables -------------------------
Stack_Limit : Address;
pragma Interface_Name (Stack_Limit, "STACK_LIMIT");
-- Bottom of user program's stack. This location is updated by
-- the kernel for each task switch.
Stop : Address;
pragma Interface_Name (Stop, "_STOP");
-- Top return address on the call stack. Used to "stop" exception
-- unwinding.
-- The user's link block is created by the linker
Usr_Link_Block : Link_Block.Link_Block_T;
pragma Interface_Name (Usr_Link_Block, "LINK_BLOCK");
---------------------------- #i5: Ada RTS Init ------------------------------
-- This routine is called explicity by startup to set up the Ada RTS
function Ts_Initialize (Usr_Link_Block : Link_Block.A_Link_Block_T;
Configuration_Table : V_Usr_Conf_I.
A_Configuration_Table_T;
Main_Pragmas : V_I_Cifo.A_Main_Pragmas_T;
Startup_Continue : Address) return Integer;
pragma Interface (Ada, Ts_Initialize);
pragma Interface_Name (Ts_Initialize, "TS_INITIALIZE");
-- TS_INITIALIZE is called from the user startup program to
-- boot/initialize the tasking and memory allocation data structures.
-- When TS_INITIALIZE completes its processing, control is
-- transferred to startup_continue.
--
-- If TS_INITIALIZE returns, then, the program is ready to exit and
-- it returns the exit status.
-- This routine is called explicity by startup to initialize
-- the Ada "new" allocation
procedure Aa_Init (Configuration_Table :
V_Usr_Conf_I.A_Configuration_Table_T);
pragma Interface (Ada, Aa_Init);
pragma Interface_Name (Aa_Init, "AA_INIT");
------------------------- #i6: Ada Exit Subprogram -----------------------------
procedure Ada_Exit (Status : Integer := 0);
pragma Interface (Ada, Ada_Exit);
pragma Interface_Name (Ada_Exit, "_ADA_EXIT");
-- ADA_EXIT is called when the last elaborated package (main subprogram)
-- returns. It does cleanup logic before returning back to OS.
-- These routines will not exist unless a DA runtime is used --
------------------------- #i7: DA configuration -----------------------------
procedure Dt_Start;
pragma Interface (Ada, Dt_Start);
pragma Interface_Name (Dt_Start, "DT_START");
procedure Dt_Elaborate;
pragma Interface (Ada, Dt_Elaborate);
pragma Interface_Name (Dt_Elaborate, "DT_ELABORATE");
end V_Usr_Conf_I;
nblk1=c
nid=0
hdr6=18
[0x00] rec0=16 rec1=00 rec2=01 rec3=04a
[0x01] rec0=21 rec1=00 rec2=02 rec3=0a0
[0x02] rec0=18 rec1=00 rec2=03 rec3=034
[0x03] rec0=19 rec1=00 rec2=04 rec3=02e
[0x04] rec0=16 rec1=00 rec2=05 rec3=064
[0x05] rec0=16 rec1=00 rec2=06 rec3=04c
[0x06] rec0=15 rec1=00 rec2=07 rec3=054
[0x07] rec0=18 rec1=00 rec2=08 rec3=00e
[0x08] rec0=19 rec1=00 rec2=09 rec3=066
[0x09] rec0=16 rec1=00 rec2=0a rec3=030
[0x0a] rec0=19 rec1=00 rec2=0b rec3=046
[0x0b] rec0=0b rec1=00 rec2=0c rec3=000
tail 0x21754253c874f7c4788a9 0x42a00088462060003