DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦644758529⟧ TextFile

    Length: 8991 (0x231f)
    Types: TextFile
    Names: »B«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦24d1ddd49⟧ 
                └─⟦this⟧ 

TextFile

--    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);