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 - downloadIndex: ┃ B T ┃
Length: 20048 (0x4e50) 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. -- -- -- 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 System; with Unchecked_Conversion; with Timer; with Process_Ops; with Message_Queues; with Task_Serialization; with Interprogram_Communications; with Task_Map; with Runtime_Error; with System_Definitions; package body Task_Management is pragma Suppress_All; use System_Definitions.Operators; package Tt renames Tasking_Types; package Mq renames Message_Queues; package Err renames Runtime_Error.Values; package Ipc renames Interprogram_Communications; subtype Layer is Tt.Layer; subtype Task_Control_Block is Tt.Task_Control_Block; subtype List is Tt.List; subtype Coldness_Value is Tt.Coldness_Value; subtype Valid_Entry_Id is Tt.Valid_Entry_Id; subtype Select_Branch_Table is Tt.Select_Branch_Table; subtype Select_Branch_Table_Skin is Tt.Select_Branch_Table_Skin; subtype Branch_Table_Link is Tt.Branch_Table_Link; subtype Wait_List_Skin is Tt.Wait_List_Skin; subtype Wait_List_Link is Tt.Wait_List_Link; subtype Queue_Info is Tt.Queue_Info; subtype Select_Form is Tt.Select_Form; subtype Reply_Kind is Tt.Reply_Kind; subtype Reply_Message is Tt.Reply_Message; subtype Entry_Call_Message is Tt.Entry_Call_Message; subtype Suspension_Reason is Tt.Suspension_Reason; subtype Action is Tt.Action; subtype Action_Set is Tt.Action_Set; subtype Bounds_For_Stack is Tt.Bounds_For_Stack; subtype Fork_Parameters is Tt.Fork_Parameters; subtype Buffer_List is Tt.Buffer_List; Warm : constant Coldness_Value := Tt.Warm; Cold : constant Coldness_Value := Tt.Cold; Cool : constant Coldness_Value := Tt.Cool; Root : constant Coldness_Value := Tt.Root; Abnormal : constant Action := Tt.Abnormal; Selecting_Termination : constant Action := Tt.Selecting_Termination; Non_Callable : constant Action := Tt.Non_Callable; Exception_Pending : constant Action := Tt.Exception_Pending; Activation_Done : constant Action := Tt.Activation_Done; Parent_Or_Child_Ok_Tcb_Reclamation : constant Action := Tt.Parent_Or_Child_Ok_Tcb_Reclamation; Not_Suspended : constant Suspension_Reason := Tt.Not_Suspended; Not_Activated : constant Suspension_Reason := Tt.Not_Activated; Child_Activating : constant Suspension_Reason := Tt.Child_Activating; Awaiting_Dependent_Termination : constant Suspension_Reason := Tt.Awaiting_Dependent_Termination; Calling_Entry : constant Suspension_Reason := Tt.Calling_Entry; Awaiting_Entry_Call : constant Suspension_Reason := Tt.Awaiting_Entry_Call; Delaying : constant Suspension_Reason := Tt.Delaying; Terminated : constant Suspension_Reason := Tt.Terminated; Awaiting_Tcb_Reclamation_Ok : constant Suspension_Reason := Tt.Awaiting_Tcb_Reclamation_Ok; Awaiting_Abortee_Reply : constant Suspension_Reason := Tt.Awaiting_Abortee_Reply; No_Reply : constant Reply_Kind := Tt.No_Reply; Delay_Stmt_Done : constant Reply_Kind := Tt.Delay_Stmt_Done; Call_Timed_Out : constant Reply_Kind := Tt.Call_Timed_Out; Select_Timed_Out : constant Reply_Kind := Tt.Select_Timed_Out; Activation_Group_Activated : constant Reply_Kind := Tt.Activation_Group_Activated; Rendezvous_Done : constant Reply_Kind := Tt.Rendezvous_Done; Dependents_Terminated : constant Reply_Kind := Tt.Dependents_Terminated; Termination_Selected : constant Reply_Kind := Tt.Termination_Selected; Task_Aborted : constant Reply_Kind := Tt.Task_Aborted; Child_Tcb_Reclaimable : constant Reply_Kind := Tt.Child_Tcb_Reclaimable; Abortion_Acknowledged : constant Reply_Kind := Tt.Abortion_Acknowledged; Null_Entry_Id : constant Entry_Id := 0; subtype Caller_Name is Tt.Caller_Name; Null_Caller : constant Caller_Name := 0; Null_Timer : constant Timer.Id := 0; Null_Process_Id : constant Integer := -1; function "=" (L, R : Layer_Id) return Boolean renames Tt."="; function "=" (L, R : Task_Id) return Boolean renames Tt."="; function "=" (L, R : Entry_Id) return Boolean renames Tt."="; function "=" (L, R : Coldness_Value) return Boolean renames Tt."="; function "=" (L, R : Select_Form) return Boolean renames Tt."="; function "=" (L, R : Alternative_Number) return Boolean renames Tt."="; function "=" (L, R : Reply_Kind) return Boolean renames Tt."="; function "=" (L, R : Suspension_Reason) return Boolean renames Tt."="; function "=" (L, R : Action) return Boolean renames Tt."="; function "=" (L, R : Buffer_List) return Boolean renames Tt."="; function "=" (L, R : Caller_Name) return Boolean renames Tt."="; function "=" (L, R : Exceptions.Name) return Boolean renames Exceptions."="; function "=" (L, R : Mq.Message_Id) return Boolean renames Mq."="; function "=" (L, R : Timer.Id) return Boolean renames Timer."="; function To_Task_Id is new Unchecked_Conversion (Caller_Name, Task_Id); function To_Caller_Name is new Unchecked_Conversion (Task_Id, Caller_Name); \f Debug_Mode : Boolean renames Debug_Definitions.Debug_Task_Management; Safety_Check : Boolean renames Debug_Definitions.Safety_Check; function Convert (X : Integer) return System.Address renames System_Definitions.Operators.To_Address; function Convert (X : System.Address) return Integer renames System_Definitions.Operators.To_Integer; Reply_Queue_Index : constant Mq.Wait_List_Index := 0; First_Entry_Index : constant Mq.Wait_List_Index := Mq.Wait_List_Index (Valid_Entry_Id'First); Bits_Per_Byte : constant := 8; Reply_Message_Size : constant Mq.Message_Size := Reply_Message'Size / Bits_Per_Byte; Entry_Call_Message_Size : constant Mq.Message_Size := Entry_Call_Message'Size / Bits_Per_Byte; Fork_Parameters_Size : constant Integer := Fork_Parameters'Size / Bits_Per_Byte; Default_Task_Stack_Size : constant Integer := 8192; Minimum_Os_Priority : constant := 4; Os_Base_Priority : Integer; pragma Import_Object (Os_Base_Priority, "__OS_BASE_PRIORITY"); Buffer_Free_List : Buffer_List := null; pragma Import_Object (Buffer_Free_List, "__IPC_BUFFER_FREELIST"); Main_Code_Start : System_Address; pragma Import_Object (Main_Code_Start, "__MAIN_CODE_START_VAR"); Main_Priority : Priority; pragma Import_Object (Main_Priority, "__MAIN_PRIORITY_VAR"); Task_Code_Start : System.Address; pragma Import_Object (Task_Code_Start, "__TASK_CODE_START_VAR"); Abort_Main_Program_Flag : Boolean; pragma Import_Object (Abort_Main_Program_Flag, "__ABORT_MAIN_FLAG"); Root_Task : Task_Control_Block; pragma Import_Object (Root_Task, "__ROOT_TCB"); Root_Task_Ptr : Task_Id; pragma Import_Object (Root_Task_Ptr, "__ROOT_TASK_ID"); Dummy_Task : Task_Control_Block; pragma Import_Object (Dummy_Task, "__DUMMY_TCB"); Root_Layer : Layer; pragma Import_Object (Root_Layer, "__ROOT_LAYER"); Top_Layer : Layer; pragma Import_Object (Top_Layer, "__TOP_LAYER"); package Debugging is procedure Put_Message (Msg : String); pragma Suppress (Elaboration_Check, Put_Message); pragma Export_Procedure (Put_Message, "__TMD_PUT_MESSAGE"); -- procedure Put_Layer (Layer : Layer_Id); -- pragma Suppress (Elaboration_Check, Put_Layer); -- pragma Export_Procedure (Put_Layer, "__TMD_Put_Layer"); -- procedure Put_Tcb (The_Task : Task_Id); -- pragma Suppress (Elaboration_Check, Put_Tcb); -- pragma Export_Procedure (Put_Tcb, "__TMD_Put_Tcb"); -- procedure Put_Message_Queue (Id : Mq.Id); -- pragma Suppress (Elaboration_Check, Put_Message_Queue); -- pragma Export_Procedure (Put_Message_Queue, "__TMD_Put_Message_Queue"); -- procedure Put_Message_Id (Id : Mq.Message_Id); -- pragma Suppress (Elaboration_Check, Put_Message_Id); -- pragma Export_Procedure (Put_Message_Id, "__TMD_Put_Message_Id"); end Debugging; package Storage_Manager is function New_Task_Control_Block return Task_Id; pragma Suppress (Elaboration_Check, New_Task_Control_Block); pragma Export_Function (New_Task_Control_Block, "__TMSM_NEW_TCB"); procedure Free_Tcb (A_Tcb : in out Task_Id); pragma Suppress (Elaboration_Check, Free_Tcb); pragma Export_Procedure (Free_Tcb, "__TMSM_FREE_TCB"); function New_Queues (Entries : Entry_Number; Current_Task : Task_Id) return Queue_Info; pragma Suppress (Elaboration_Check, New_Queues); pragma Export_Function (New_Queues, "__TMSM_NEW_QUEUES"); procedure Free_Queues (Queues : in out Queue_Info; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Free_Queues); pragma Export_Procedure (Free_Queues, "__TMSM_FREE_QUEUES"); function New_Buffer_Item (With_Buffer : Integer; Slot_Data : Integer; Next_Item : Buffer_List) return Buffer_List; pragma Suppress (Elaboration_Check, New_Buffer_Item); pragma Export_Function (New_Buffer_Item, "__TMSM_NEW_BUFFER"); end Storage_Manager; package Runtime_Exceptions is procedure Raise_Runtime_Error (Caller : String; Msg : String; Error : Runtime_Error.Fatal_Error; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Raise_Runtime_Error); pragma Export_Procedure (Raise_Runtime_Error, "__TMRE_RAISE_RUNTIME"); procedure Raise_Abnormal_Task_Error (Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Raise_Abnormal_Task_Error); pragma Export_Procedure (Raise_Abnormal_Task_Error, "__TMRE_RAISE_ABNORMAL"); procedure Raise_Force_Term_Error (Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Raise_Force_Term_Error); pragma Export_Procedure (Raise_Force_Term_Error, "__TMRE_RAISE_FORCE_TERM"); procedure Check_For_Abnormality (Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Check_For_Abnormality); pragma Export_Procedure (Check_For_Abnormality, "__TMRE_CHECK_ABNORMAL"); procedure Raise_Tasking_Error; pragma Suppress (Elaboration_Check, Raise_Tasking_Error); pragma Export_Procedure (Raise_Tasking_Error, "__TMRE_RAISE_TASKING"); procedure Raise_Storage_Error; pragma Suppress (Elaboration_Check, Raise_Storage_Error); pragma Export_Procedure (Raise_Storage_Error, "__TMRE_RAISE_STORAGE"); procedure Raise_Program_Error; pragma Suppress (Elaboration_Check, Raise_Program_Error); pragma Export_Procedure (Raise_Program_Error, "__TMRE_RAISE_PROGRAM"); procedure Check_For_Pending_Exception (Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Check_For_Pending_Exception); pragma Export_Procedure (Check_For_Pending_Exception, "__TMRE_CHECK_EXCEPTION"); procedure Raise_Exception; pragma Suppress (Elaboration_Check, Raise_Exception); pragma Export_Procedure (Raise_Exception, "__TMRE_RAISE_EXCEPTION"); end Runtime_Exceptions; package Checking is procedure Check_Message_Queue_Status (Status : Mq.Stratus; Error : Runtime_Error.Fatal_Error; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Check_Message_Queue_Status); pragma Export_Procedure (Check_Message_Queue_Status, "__TMC_CHECK_MSGQ_STATUS"); procedure Check_Timer_Status (Status : Timer.Stratus; Error : Runtime_Error.Fatal_Error; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Check_Timer_Status); pragma Export_Procedure (Check_Timer_Status, "__TMC_CHECK_TIMER_STATUS"); -- procedure Check_Process_Ops_Status (Status : Process_Ops.Status; -- Error : Runtime_Error.Fatal_Error; -- Current_Task : Task_Id); -- pragma Suppress (Elaboration_Check, Check_Process_Ops_Status); -- pragma Export_Procedure (Check_Process_Ops_Status, -- "__TMC_Check_Proc_Ops_Status"); procedure Check_Reply (Received : Reply_Kind; Expected : Reply_Kind; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Check_Reply); pragma Export_Procedure (Check_Reply, "__TMC_CHECK_REPLY"); procedure Check_Task (The_Task : Task_Id; Caller : String; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Check_Task); pragma Export_Procedure (Check_Task, "__TMC_CHECK_TASK"); -- procedure Check_Layer (Layer : Layer_Id; -- Caller : String; -- Current_Task : Task_Id); -- pragma Suppress (Elaboration_Check, Check_Layer); -- pragma Export_Procedure (Check_Layer, "__TMC_Check_Layer"); end Checking; package Message_Queue_Utilities is procedure Send_Reply (To_Task : Task_Id; Reply : Reply_Kind; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Send_Reply); pragma Export_Procedure (Send_Reply, "__TMMQU_SEND_REPLY"); procedure Await_Reply (Suspension_State : Suspension_Reason; Reply : out Reply_Kind; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Await_Reply); pragma Export_Procedure (Await_Reply, "__TMMQU_AWAIT_REPLY"); -- function Retrieve_Reply -- (Queue : Mq.Id; Current_Task : Task_Id) return Reply_Kind; -- pragma Suppress (Elaboration_Check, Retrieve_Reply); -- -- function Retrieve_Entry_Call_Message -- (Queue : Mq.Id; -- Empty_Queue_Ok : Boolean := False; -- Current_Task : Task_Id) return Entry_Call_Message; -- pragma Suppress (Elaboration_Check, Retrieve_Entry_Call_Message); function Get_Associated_Data (For_Queue : Mq.Id; Current_Task : Task_Id) return Mq.Associated_Data; pragma Suppress (Elaboration_Check, Get_Associated_Data); pragma Export_Function (Get_Associated_Data, "__TMMQU_GET_ASSOC_DATA"); procedure Purge_Reply_Queue (Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Purge_Reply_Queue); pragma Export_Procedure (Purge_Reply_Queue, "__TMMQU_PURGE_REPLYQ"); -- procedure Assert_Empty_Reply_Queue -- (Caller : String; Current_Task : Task_Id); -- pragma Suppress (Elaboration_Check, Assert_Empty_Reply_Queue); -- pragma Export_Procedure (Assert_Empty_Reply_Queue, -- "__TMMQU_Assert_Empty_Reply_Q"); function Start_Timer (Time : Duration; Reply : Reply_Kind; Current_Task : Task_Id) return Timer.Id; pragma Suppress (Elaboration_Check, Start_Timer); pragma Export_Function (Start_Timer, "__TMMQU_START_TIMER"); procedure Cancel_Timer (Timer_Id : Timer.Id; Purge_If_Expired : Boolean := False; Current_Task : Task_Id); pragma Suppress (Elaboration_Check, Cancel_Timer); pragma Export_Procedure (Cancel_Timer, "__TMMQU_CANCEL_TIMER"); end Message_Queue_Utilities; function Checksum (For_Tcb : Task_Id) return Integer; pragma Suppress (Elaboration_Check, Checksum); pragma Interface (Asm, Checksum); pragma Import_Function (Checksum, "__TCB_CHECKSUM", Mechanism => Value); function Get_Current_Task_And_Acquire_Lock (The_Lock : Task_Serialization.Lock := Task_Serialization.Tasking_Lock) return Task_Id renames Task_Serialization.Acquire_Lock; procedure Reacquire_Lock (The_Lock : Task_Serialization.Lock := Task_Serialization.Tasking_Lock) renames Task_Serialization.Reacquire_Lock; procedure Release_Lock renames Task_Serialization.Release_Lock; package body Debugging is separate; package body Storage_Manager is separate; package body Runtime_Exceptions is separate; package body Checking is separate; package body Message_Queue_Utilities is separate; package body Creation_And_Activation is separate; package body Termination_And_Abortion is separate; package body Calling_And_Delaying is separate; package body Accepting_And_Selecting is separate; package body Attributes is separate; package body Intra_Runtime is separate; package body Ipc_Support is separate; procedure Initialize is separate; begin Buffer_Free_List := null; Initialize; end Task_Management; pragma Export_Elaboration_Procedure ("__TASK_MGMT_BODY_ELAB"); pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit, Elab_Routine_Number => Runtime_Ids.Internal);