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

⟦c21eeaa59⟧ TextFile

    Length: 3763 (0xeb3)
    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 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);