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: ┃ T V

⟦1ba927b77⟧ TextFile

    Length: 8743 (0x2227)
    Types: TextFile
    Names: »V«

Derivation

└─⟦516dceb10⟧ Bits:30000751 8mm tape, Rational 1000, RCI_VADS
    └─ ⟦9a14c9417⟧ »DATA« 
        └─⟦this⟧ 

TextFile


-- Copyright 1986,1987,1988,1991 Verdix Corporation

------------------------------------------------------------------------------
-- User interface to the ADA tasking extensions
------------------------------------------------------------------------------
WITH V_I_Types;
USE V_I_Types;
WITH System;
PACKAGE V_I_Tasks IS

   PRAGMA Suppress (All_Checks);
   PRAGMA Suppress (Exception_Tables);
   PRAGMA Not_Elaborated;

   --------------------------------------------------------------------------
   -- Returns the Program Control Block (PCB) of the current program.
   --------------------------------------------------------------------------
   FUNCTION Get_Current_Program RETURN A_Program_T;

   --------------------------------------------------------------------------
   -- Returns the specified task's Program Control Block (PCB)
   --------------------------------------------------------------------------
   FUNCTION Get_Program (A_Task : A_Task_T) RETURN A_Program_T;

   --------------------------------------------------------------------------
   -- Terminates the specified Ada program
   --------------------------------------------------------------------------
   PROCEDURE Terminate_Program
                (Status    : Integer;  -- exit status
                 A_Program : A_Program_T := Get_Current_Program);

   --------------------------------------------------------------------------
   -- Gets the user defined key for the specified program.
   --------------------------------------------------------------------------
   FUNCTION Get_Program_Key (A_Program : A_Program_T := Get_Current_Program)
                            RETURN System.Address;

   --------------------------------------------------------------------------
   -- Returns the Task Control Block (TCB) of the current task.
   --------------------------------------------------------------------------
   FUNCTION Get_Current_Task RETURN A_Task_T;

   --------------------------------------------------------------------------
   -- Returns the Task Control Block (TCB) associated with the specified task.
   --------------------------------------------------------------------------
   FUNCTION Get_Task (Id : System.Task_Id) RETURN A_Task_T;

   --------------------------------------------------------------------------
   -- Suspends/resumes the specified task. Returns TRUE, if specified task
   -- is excecuting (current_task), ready (on_runq) or suspended via
   -- previous suspend_task request.
   --------------------------------------------------------------------------
   FUNCTION Suspend_Task (A_Task : A_Task_T) RETURN Boolean;
   FUNCTION Resume_Task  (A_Task : A_Task_T) RETURN Boolean;

   --------------------------------------------------------------------------
   -- Gets/sets the user field in the specified task.
   --------------------------------------------------------------------------
   FUNCTION  Get_User_Field (A_Task : A_Task_T) RETURN User_Field_T;
   PROCEDURE Set_User_Field (A_Task : A_Task_T; New_Value : User_Field_T);

   --------------------------------------------------------------------------
   -- Gets/sets the current or static priority of the specified task.
   --
   -- Task scheduling is only re-evaluated if the current priority of the
   -- current task is lowered or if the current priority of any other
   -- task is set.
   --
   -- The current priority is used for all scheduling activities.
   -- The static priority is only used for rendezvous as follows:
   --  rendezvous_start:
   --      if not PRIORITY_INHERITANCE_ENABLED and then
   --         called_task.current_priority < calling_task.static_priority
   --      then
   --          called_task.current_priority := calling_task.static_prioity;
   --      end if;
   --  rendezvous_end:
   --      called_task.current_priority := called_task.static_priority;
   --------------------------------------------------------------------------
   FUNCTION  Get_Current_Priority (A_Task : A_Task_T) RETURN System.Priority;
   PROCEDURE Set_Current_Priority
                (A_Task : A_Task_T; New_Value : System.Priority);

   FUNCTION  Get_Static_Priority (A_Task : A_Task_T) RETURN System.Priority;
   PROCEDURE Set_Static_Priority
                (A_Task : A_Task_T; New_Value : System.Priority);

   --------------------------------------------------------------------------
   -- Gets/sets the time slice interval for the specified task.
   --
   -- Time slicing for a task is disabled by setting it to 0.0 seconds
   --------------------------------------------------------------------------
   FUNCTION  Get_Time_Slice (A_Task : A_Task_T) RETURN Duration;
   PROCEDURE Set_Time_Slice (A_Task : A_Task_T; New_Time_Slice : Duration);

   --------------------------------------------------------------------------
   -- Gets/sets the global time slicing enabled configuration parameter
   --------------------------------------------------------------------------
   FUNCTION  Get_Time_Slicing RETURN Boolean;
   PROCEDURE Set_Time_Slicing (Enabled : Boolean);

   --------------------------------------------------------------------------
   -- Gets/sets the current pool (cp) for the current task
   --------------------------------------------------------------------------
   FUNCTION  Get_Pool RETURN System.Address;
   PROCEDURE Set_Pool (P : System.Address);

   --------------------------------------------------------------------------
   -- Gets/sets the flag to disable the program from exiting
   --------------------------------------------------------------------------
   FUNCTION  Get_Exit_Disabled_Flag RETURN Boolean;
   PROCEDURE Set_Exit_Disabled_Flag (Disabled_Flag : Boolean);

   --------------------------------------------------------------------------
   -- Disables/enables task preemption
   --
   -- Shouldn't be called from an ISR. disable_preemption doesn't
   -- disable interrupts.
   --------------------------------------------------------------------------
   PROCEDURE Disable_Preemption;
   PROCEDURE Enable_Preemption;

PRIVATE
   PRAGMA Interface (Ada, Get_Current_Program);
   PRAGMA Interface_Name (Get_Current_Program, "__GET_CURRENT_PROGRAM");
   PRAGMA Interface (Ada, Get_Program);
   PRAGMA Interface_Name (Get_Program, "__GET_PROGRAM");
   PRAGMA Interface (Ada, Terminate_Program);
   PRAGMA Interface_Name (Terminate_Program, "__TERMINATE_PROGRAM");
   PRAGMA Interface (Ada, Get_Program_Key);
   PRAGMA Interface_Name (Get_Program_Key, "__GET_PROGRAM_KEY");
   PRAGMA Interface (Ada, Get_Current_Task);
   PRAGMA Interface_Name (Get_Current_Task, "__GET_CURRENT_TASK");
   PRAGMA Interface (Ada, Get_Task);
   PRAGMA Interface_Name (Get_Task, "__GET_TASK");
   PRAGMA Interface (Ada, Suspend_Task);
   PRAGMA Interface_Name (Suspend_Task, "TS_SUSPEND_TASK");
   PRAGMA Interface (Ada, Resume_Task);
   PRAGMA Interface_Name (Resume_Task, "TS_RESUME_TASK");
   PRAGMA Interface (Ada, Get_User_Field);
   PRAGMA Interface_Name (Get_User_Field, "__GET_USER_FIELD");
   PRAGMA Interface (Ada, Set_User_Field);
   PRAGMA Interface_Name (Set_User_Field, "__SET_USER_FIELD");
   PRAGMA Interface (Ada, Get_Current_Priority);
   PRAGMA Interface_Name (Get_Current_Priority, "__GET_CURRENT_PRIORITY");
   PRAGMA Interface (Ada, Set_Current_Priority);
   PRAGMA Interface_Name (Set_Current_Priority, "__SET_CURRENT_PRIORITY");
   PRAGMA Interface (Ada, Get_Static_Priority);
   PRAGMA Interface_Name (Get_Static_Priority, "__GET_STATIC_PRIORITY");
   PRAGMA Interface (Ada, Set_Static_Priority);
   PRAGMA Interface_Name (Set_Static_Priority, "__SET_STATIC_PRIORITY");
   PRAGMA Interface (Ada, Get_Time_Slice);
   PRAGMA Interface_Name (Get_Time_Slice, "__GET_TIME_SLICE");
   PRAGMA Interface (Ada, Set_Time_Slice);
   PRAGMA Interface_Name (Set_Time_Slice, "__SET_TIME_SLICE");
   PRAGMA Interface (Ada, Get_Time_Slicing);
   PRAGMA Interface_Name (Get_Time_Slicing, "__GET_TIME_SLICING");
   PRAGMA Interface (Ada, Set_Time_Slicing);
   PRAGMA Interface_Name (Set_Time_Slicing, "__SET_TIME_SLICING");
   PRAGMA Interface (Ada, Get_Pool);
   PRAGMA Interface_Name (Get_Pool, "__GET_POOL");
   PRAGMA Interface (Ada, Set_Pool);
   PRAGMA Interface_Name (Set_Pool, "__SET_POOL");
   PRAGMA Interface (Ada, Get_Exit_Disabled_Flag);
   PRAGMA Interface_Name (Get_Exit_Disabled_Flag, "__GET_EXIT_DISABLED_FLAG");
   PRAGMA Interface (Ada, Set_Exit_Disabled_Flag);
   PRAGMA Interface_Name (Set_Exit_Disabled_Flag, "__SET_EXIT_DISABLED_FLAG");
   PRAGMA Interface (Ada, Disable_Preemption);
   PRAGMA Interface_Name (Disable_Preemption, "__DISABLE_PREEMPTION");
   PRAGMA Interface (Ada, Enable_Preemption);
   PRAGMA Interface_Name (Enable_Preemption, "__ENABLE_PREEMPTION");
END V_I_Tasks;