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