|
|
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: 3763 (0xeb3)
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 Intra_Runtime is
pragma Suppress_All;
procedure Set_Exception (To_Value : Exceptions.Name) is
pragma Routine_Number (Runtime_Ids.Internal);
Current_Task : constant Task_Id := Get_Current_Task_And_Acquire_Lock;
begin
-- if Debug_Mode then
-- Debugging.Put_Message ("Entered Set_Exception");
-- end if;
if Current_Task.Action_State (Abnormal) then
Current_Task.Exception_Id := null;
else
Current_Task.Exception_Id := To_Value;
end if;
Release_Lock;
end Set_Exception;
function Get_Exception_And_Clear_Exception_Pending_Flag
return Exceptions.Name is
pragma Routine_Number (Runtime_Ids.Internal);
Current_Task : constant Task_Id := Get_Current_Task_And_Acquire_Lock;
Result : Exceptions.Name := Current_Task.Exception_Id;
begin
-- if Debug_Mode then
-- Debugging.Put_Message
-- ("Entered Get_Exception_And_Clear_Exception_Pending_Flag");
-- end if;
Current_Task.Action_State (Exception_Pending) := False;
Release_Lock;
return Result;
end Get_Exception_And_Clear_Exception_Pending_Flag;
procedure Finalize is
pragma Routine_Number (Runtime_Ids.Internal);
begin
Root_Task.Action_State (Abnormal) := False;
Root_Task.Action_State (Exception_Pending) := False;
Termination_And_Abortion.Await_Dependents;
Storage_Manager.Free_Queues (Root_Task.Queues, Current_Task => null);
end Finalize;
procedure Handle_Signal (Signal_Code : Integer) is
pragma Routine_Number (Runtime_Ids.Internal);
Abort_Signal_Code : constant := 2;
begin
-- If the signal is a program termination signal (^E), then
-- want to abort the main program (i.e. root_task_id). Tentatively,
-- it has been decided that this will be done by invoking a new
-- serialization operation. If the lock is available, then this
-- operation would acquire the lock, perform the abortion, and
-- release the lock. If the lock is not available, then a bit would
-- be set and the abortion would occur the next time that the lock
-- is released (as part of the release operation). It is not
-- clear what operations (e.g. output) are Ok in a signal intercept
-- routine.
if Signal_Code = Abort_Signal_Code then
Runtime_Error.Issue (Runtime_Error.Values.
Abort_Signal_Received_By_Program);
Abort_Main_Program_Flag := True;
end if;
end Handle_Signal;
end Intra_Runtime;
pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit,
Elab_Routine_Number => Runtime_Ids.Internal);