|
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