|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 8991 (0x231f)
Types: TextFile
Names: »B«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦24d1ddd49⟧
└─⟦this⟧
-- The use of this system is subject to the software license terms and
-- conditions agreed upon between Rational and the Customer.
--
-- Copyright 1988 by Rational.
--
-- RESTRICTED RIGHTS LEGEND
--
-- Use, duplication, or disclosure by the Government is subject to
-- restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
-- Technical Data and Computer Software clause at 52.227-7013.
--
--
-- Rational
-- 3320 Scott Boulevard
-- Santa Clara, California 95054-3197
--
-- PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL;
-- USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION
-- IS STRICTLY PROHIBITED. THIS MATERIAL IS PROTECTED AS
-- AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF
-- 1976. CREATED 1988. ALL RIGHTS RESERVED.
--
--
with Storage_Management;
separate (Task_Management)
procedure Initialize is
pragma Routine_Number (Runtime_Ids.Internal);
pragma Suppress_All;
package Sm renames Standard.Storage_Management;
function Convert is new Unchecked_Conversion (System.Address, Task_Id);
function Convert is new Unchecked_Conversion (System.Address, Layer_Id);
function Convert is new Unchecked_Conversion
(Source => System.Address, Target => Group_Ref);
function Convert is new Unchecked_Conversion (Source => System.Address,
Target => Address_Ref);
begin
Initialize_Tasking_Lock:
begin
Task_Serialization.Tasking_Lock.Next := null;
Task_Serialization.Tasking_Lock.Key := null;
end Initialize_Tasking_Lock;
Create_Tasking_Collections:
begin
Tt.Tcb_Collection :=
Sm.Allocate_Collection
(Units => Sm.Use_Default_Chunk_Size, Extend => True);
Tt.Branch_Table_Collection :=
Sm.Allocate_Collection
(Units => Sm.Use_Default_Chunk_Size, Extend => True);
Tt.Wait_List_Collection :=
Sm.Allocate_Collection
(Units => Sm.Use_Default_Chunk_Size, Extend => True);
Tt.Buffer_Item_Collection :=
Sm.Allocate_Collection
(Units => Sm.Use_Default_Chunk_Size, Extend => True);
end Create_Tasking_Collections;
Clear_Abort_Main_Flag:
begin
Abort_Main_Program_Flag := False;
end Clear_Abort_Main_Flag;
Setup_Root_Layer:
begin
Root_Layer.Dependent_Task_List.Next := Convert (Root_Task'Address);
Root_Layer.Master_Task := null;
Root_Layer.Layer_Link := null;
Root_Layer.Non_Terminated := 1;
Root_Layer.Non_Terminable := 1;
Root_Layer.Coldness := Root;
end Setup_Root_Layer;
Setup_Root_Task_Id:
begin
Os_Base_Priority := Integer (Main_Priority);
Process_Ops.Set_Priority (Process_Id =>
Process_Ops.Current_Process_Id,
Priority => Integer (Main_Priority));
-- Root_Task.all :=
-- Task_Control_Block'
-- (Checksum => Checksum (Root_Task),
Root_Task.Checksum := Checksum (Convert (Root_Task'Address));
-- Exception_Id => Exceptions.No_Error,
Root_Task.Exception_Id := null;
-- Stack_Bounds => (First => Main_Low_Stack_Bound,
-- Size => Main_High_Stack_Bound),
-- Stack bound for the root task are setup by assembly
-- Root_Task.Stack_Bounds.First := Main_Low_Stack_Bound;
-- Root_Task.Stack_Bounds.Size := Main_High_Stack_Bound;
-- Action_State => (Activation_Done => True, others => False),
Root_Task.Action_State :=
Action_Set'(Activation_Done => True, others => False);
-- Suspension_State => Not_Suspended,
Root_Task.Suspension_State := Not_Suspended;
-- Current_Priority => Main_Priority,
Root_Task.Current_Priority := Main_Priority;
-- Partner_Priority => Priority'First,
Root_Task.Partner_Priority := Priority'First;
-- Code_Start_Ref => Convert (Main_Code_Start'Address),
-- Code_Start_Ref is setup by assembly code
-- Root_Task.Code_Start_Ref := Convert (Main_Code_Start'Address);
-- Current_Layer => null,
Root_Task.Current_Layer := null;
-- Queues => Storage_Manager.New_Queues (0, Current_Task => null),
Root_Task.Queues := Storage_Manager.New_Queues
(0, Current_Task => null);
-- Master_Block => Convert (Root_Layer'Address),
Root_Task.Master_Block := Convert (Root_Layer'Address);
-- Layer_Link => Empty_List,
Root_Task.Layer_Link.Next := null;
-- Callers_Head => Empty_List,
Root_Task.Callers_Head.Next := null;
-- Callers_Link => Empty_List,
Root_Task.Callers_Link.Next := null;
-- Activations_In_Progress => 0,
Root_Task.Activations_In_Progress := 0;
-- Spare
Root_Task.Spare_Word0 := 0;
-- Process_Id => Process_Ops.Current_Process_Id,
Root_Task.Process_Id := Process_Ops.Current_Process_Id;
-- Ipc_Buffer_List => null);
Root_Task.Ipc_Buffer_List := null;
-- Value of Root_Task_Ptr is assigned by assembly code
-- Root_Task_Ptr := Convert (Root_Task'Address);
end Setup_Root_Task_Id;
Setup_Dummy_Task_Id:
begin
-- NOTE: for efficiency, the only fields of Dummy_Task TCB that are
-- initialized are those that may possible be used, so this
-- record has fields with undefined values.
--
-- Dummy_Task := Task_Control_Block'
-- (Checksum => Checksum (Convert (Dummy_Task'Address)),
Dummy_Task.Checksum := Checksum (Convert (Dummy_Task'Address));
-- Exception_Id => null,
Dummy_Task.Exception_Id := null;
-- Stack_Bounds =>
-- (First => Null_Address, Last => Null_Address),
-- *** Stack_Bounds uninitialized
-- Code_Start_Ref => null,
Dummy_Task.Code_Start_Ref := null;
-- Process_Id => Null_Process_Id,
Dummy_Task.Process_Id := Null_Process_Id;
-- Action_State => (Activation_Done | Non_Callable => True,
-- others => False),
Dummy_Task.Action_State :=
Action_Set'(Activation_Done | Non_Callable => True,
others => False);
-- Suspension_State => Terminated,
Dummy_Task.Suspension_State := Terminated;
-- Current_Priority => Priority'First,
-- *** Current_Priority uninitialized
-- Partner_Priority => Priority'First,
-- *** Partner_Priority uninitialized
-- Current_Layer => null,
-- *** Current_Layer uninitialized
-- Queues => (Wait_List => null, Branch_Table => null, Accept_List => null),
-- *** Queues uninitialized
-- Dummy_Task.Queues.Wait_List := null;
-- Dummy_Task.Queues.Branch_Table := null;
-- Dummy_Task.Queues.Accept_List := null;
-- Master_Block => null,
-- *** Master_Block uninitialized
-- Layer_Link => Empty_List,
-- *** Layer_Link uninitialized
-- Callers_Head => Empty_List,
-- *** Callers_Head uninitialized
-- Callers_Link => Empty_List,
-- *** Callers_Link uninitialized
-- Activations_In_Progress => 0,
-- *** Activations_In_Progress uninitialized
-- Delay_Alternative_Duration => Duration'First,
-- *** Delay_Alternative_Duration uninitialized
-- Ipc_Buffer_List => null);
-- *** Ipc_Buffer_List unitialized
--
end Setup_Dummy_Task_Id;
Initialize_Top_Layer:
begin
Creation_And_Activation.Initialize_Master
(Convert (Top_Layer'Address));
end Initialize_Top_Layer;
end Initialize;
pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit,
Elab_Routine_Number => Runtime_Ids.Internal);