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

⟦97b8bc249⟧ TextFile

    Length: 11942 (0x2ea6)
    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.
--
--

separate (Task_Management)
package body Checking is

    pragma Suppress_All;

    -- function Operation (Error : Runtime_Error.Fatal_Error) return String is
    --     pragma Routine_Number (Runtime_Ids.Internal);
    -- begin
    --     case Error is
    --         when Err.Bad_Status_From_Wait_Nonblocking =>
    --             return "Wait_Nonblocking";
    --         when Err.Bad_Status_From_Wait =>
    --             return "Wait";
    --         when Err.Bad_Status_From_Length =>
    --             return "Length";
    --         when Err.Bad_Status_From_Remove_Message =>
    --             return "Remove_Message";
    --         when Err.Bad_Status_From_Send =>
    --             return "Send";
    --         when Err.Bad_Status_From_Send_Without_Priority =>
    --             return "Send_Without_Priority";
    --         when Err.Bad_Status_From_Retrieve_Message =>
    --             return "Retrieve_Message";
    --         when Err.Bad_Status_From_Create =>
    --             return "Create";
    --         when Err.Bad_Status_From_Delete =>
    --             return "Delete";
    --         when Err.Bad_Status_From_Delete_If_Empty =>
    --             return "Delete_If_Empty";
    --
    --         when Err.Bad_Status_From_Start_Timer =>
    --             return "Start";
    --         when Err.Bad_Status_From_Stop_Timer =>
    --             return "Stop";
    --
    --         when Err.Bad_Status_From_Set_Priority =>
    --             return "Set_Priority";
    --         when Err.Bad_Status_From_Fork =>
    --             return "Fork";
    --
    --         when others =>
    --             return "<unknown operation>";
    --     end case;
    -- end Operation;


    procedure Check_Message_Queue_Status (Status : Mq.Stratus;
                                          Error : Runtime_Error.Fatal_Error;
                                          Current_Task : Task_Id) is
        pragma Routine_Number (Runtime_Ids.Internal);
    begin
        if Status /= Mq.Q_Success then
            Runtime_Exceptions.Raise_Runtime_Error
               ("Check_Message_Queue_Status", Mq.Stratus'Image (Status), Error,
                Current_Task => Current_Task);
        end if;
    end Check_Message_Queue_Status;


    procedure Check_Timer_Status (Status       : Timer.Stratus;
                                  Error        : Runtime_Error.Fatal_Error;
                                  Current_Task : Task_Id) is
        pragma Routine_Number (Runtime_Ids.Internal);
    begin
        if Status /= Timer.Ti_Success then
            Runtime_Exceptions.Raise_Runtime_Error
               ("Check_Timer_Status", Timer.Stratus'Image (Status), Error,
                Current_Task => Current_Task);
        end if;
    end Check_Timer_Status;


    -- procedure Check_Process_Ops_Status (Status : Process_Ops.Status;
    --                                     Error : Runtime_Error.Fatal_Error;
    --                                     Current_Task : Task_Id) is
    --     pragma Routine_Number (Runtime_Ids.Internal);
    -- begin
    --     if Status /= Process_Ops.Success then
    --         Runtime_Exceptions.Raise_Runtime_Error
    --            ("Check_Process_Ops_Status",
    --             Process_Ops.Status'Image (Status), Error,
    --             Current_Task => Current_Task);
    --     end if;
    -- end Check_Process_Ops_Status;


    procedure Check_Reply (Received     : Reply_Kind;
                           Expected     : Reply_Kind;
                           Current_Task : Task_Id) is
        pragma Routine_Number (Runtime_Ids.Internal);
    begin
        if Received /= Expected then
            Runtime_Exceptions.Raise_Runtime_Error
               ("Check_Reply", Reply_Kind'Image (Received) & " /=" &
                                  Reply_Kind'Image (Expected),
                Err.Unexpected_Reply,
                Current_Task => Current_Task);
        end if;
    end Check_Reply;


    procedure Check_Task (The_Task     : Task_Id;
                          Caller       : String;
                          Current_Task : Task_Id) is
        pragma Routine_Number (Runtime_Ids.Internal);
    begin
        if The_Task = null then
            Runtime_Exceptions.Raise_Runtime_Error
               ("Check_Task", "null task id", Err.Unexpected_Null_Task_Id,
                Current_Task => Current_Task);
        elsif The_Task.Checksum /= Checksum (The_Task) then
            Runtime_Exceptions.Raise_Runtime_Error
               ("Check_Task", "bad checksum", Err.Bad_Tcb_Checksum,
                Current_Task => Current_Task);
        elsif Current_Task.Process_Id /= Process_Ops.Current_Process_Id then
            --declare
            --    Temp : Integer := Process_Ops.Current_Process_Id;
            --begin
            --    if Current_Task.Process_Id /= Temp then
            --        Debugging.Put_Message
            --           ("PID from Tcb is " &
            --            Integer'Image (Current_Task.Process_Id));
            --        Debugging.Put_Message ("PID from OS is " &
            --                               Integer'Image (Temp));
            --        Debugging.Put_Tcb (Current_Task);
            --        --***
            --    end if;
            Runtime_Exceptions.Raise_Runtime_Error
               ("Check_Task", "tcb/pid mismatch", Err.Tcb_Map_Error,
                Current_Task => Current_Task);
        end if;
    end Check_Task;

    --
    -- procedure Check_Layer
    --              (Layer : Layer_Id; Caller : String; Current_Task : Task_Id) is
    --     pragma Routine_Number (Runtime_Ids.Internal);
    -- Layer_Temp : Layer_Id;
    -- Dependent : Task_Id;
    -- Coldness, Prev_Coldness : Coldness_Value;
    -- Found : Boolean := False;
    -- Prev_Coldness_Valid : Boolean := False;
    --
    -- Caller_Name : constant String :=
    --    "Check_Layer (called by " & Caller & ")";
    -- begin
    -- if Layer = null then
    --     Runtime_Exceptions.Raise_Runtime_Error
    --        (Caller_Name, "null layer_id", Err.Unexpected_Null_Layer,
    --         Current_Task => Current_Task);
    -- end if;
    --
    -- if Layer.Coldness = Root then
    --     return;
    -- end if;
    --
    -- Check_Task (Layer.Master_Task, Caller_Name,
    --             Current_Task => Current_Task);
    --
    -- if Layer.Non_Terminated < Layer.Non_Terminable then
    --     Runtime_Exceptions.Raise_Runtime_Error
    --        (Caller_Name,
    --         "non_terminable count exceeds non_terminated count",
    --         Err.Layer_State_Inconsistency,
    --         Current_Task => Current_Task);
    -- end if;
    --
    -- Layer_Temp := Layer.Master_Task.Current_Layer;
    --
    -- while Layer_Temp /= null loop
    --     if Debug_Mode then
    --         Debugging.Put_Layer (Layer_Temp);
    --     end if;
    --
    --     if Layer_Temp = Layer then
    --         Found := True;
    --     end if;
    --
    --     if Prev_Coldness_Valid then
    --         Prev_Coldness := Coldness;
    --     end if;
    --     Coldness := Layer_Temp.Coldness;
    --
    --     case Coldness is
    --         when Cold | Cool =>
    --             if not Layer_Temp.Master_Task.Action_State
    --                       (Terminate_Open) then
    --                 Runtime_Exceptions.Raise_Runtime_Error
    --                    (Caller_Name,
    --                     "cold or cool layer's master_task does not have open terminate alternative",
    --                     Err.Layer_State_Inconsistency,
    --                     Current_Task => Current_Task);
    --             end if;
    --             if Prev_Coldness_Valid and then (Prev_Coldness /= Cold) then
    --                 Runtime_Exceptions.Raise_Runtime_Error
    --                    (Caller_Name,
    --                     "cold or cool layer found beneath non-cold layer",
    --                     Err.Layer_State_Inconsistency,
    --                     Current_Task => Current_Task);
    --             end if;
    --             if Layer_Temp.Non_Terminable > 0 and then
    --                Coldness = Cold then
    --                 Runtime_Exceptions.Raise_Runtime_Error
    --                    (Caller_Name,
    --                     "cold layer found with positive nonterminable count",
    --                     Err.Layer_State_Inconsistency,
    --                     Current_Task => Current_Task);
    --             end if;
    --
    --         when Warm =>
    --             if Prev_Coldness_Valid then
    --                 case Prev_Coldness is
    --                     when Cold =>
    --                         Runtime_Exceptions.Raise_Runtime_Error
    --                            (Caller_Name,
    --                             "warm layer found beneath cold layer",
    --                             Err.Layer_State_Inconsistency,
    --                             Current_Task => Current_Task);
    --
    --                     when Cool =>
    --                         if Layer_Temp.Non_Terminable = 0 then
    --                             Runtime_Exceptions.Raise_Runtime_Error
    --                                (Caller_Name,
    --                                 "warm layer with zero non_terminable count found beneath cool layer",
    --                                 Err.Layer_State_Inconsistency,
    --                                 Current_Task => Current_Task);
    --                         end if;
    --
    --                     when others =>
    --                         null;
    --                 end case;
    --             end if;
    --
    --         when Root =>
    --             Runtime_Exceptions.Raise_Runtime_Error
    --                (Caller_Name, "root layer found on layer list",
    --                 Err.Layer_State_Inconsistency,
    --                 Current_Task => Current_Task);
    --     end case;
    --
    --     Prev_Coldness_Valid := True;
    --     Layer_Temp := Layer_Temp.Layer_Link;
    -- end loop;
    --
    -- if not Found then
    --     Runtime_Exceptions.Raise_Runtime_Error
    --        (Caller_Name, "layer not found on its master_task's layer list",
    --         Err.Layer_State_Inconsistency,
    --         Current_Task => Current_Task);
    -- end if;
    --
    -- Dependent := Layer.Dependent_Task_List.Next;
    --
    -- while Dependent /= null loop
    --     Check_Task (Dependent, Caller_Name, Current_Task => Current_Task);
    --     if Dependent.Master_Block /= Layer then
    --         Runtime_Exceptions.Raise_Runtime_Error
    --            (Caller_Name,
    --             "dependent_task_list/master_block inconsistency found",
    --             Err.Layer_State_Inconsistency,
    --             Current_Task => Current_Task);
    --     end if;
    --
    --     Dependent := Dependent.Layer_Link.Next;
    -- end loop;
    -- end Check_Layer;

end Checking;
pragma Runtime_Unit (Unit_Number         => Runtime_Ids.Runtime_Compunit,
                     Elab_Routine_Number => Runtime_Ids.Internal);