|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 32768 (0x8000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package V_I_Taskop, seg_04ce17
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
-- Copyright 1986,1987,1988, 1992 Verdix Corporation
------------------------------------------------------------------------------
-- User interface to the ADA tasking operations
--
-- The compiler calls the following subprograms to implement the
-- ADA tasking semantics.
------------------------------------------------------------------------------
with System;
use System;
with Unsigned_Types;
with Ada_Krn_Defs;
with Link_Block;
with V_Usr_Conf_I;
with V_I_Cifo;
package V_I_Taskop is
pragma Suppress (All_Checks);
pragma Suppress (Exception_Tables);
pragma Not_Elaborated;
--------------------------------------------------------------------------
-- Tasking operation data structures. TASK_ID and PROGRAM_ID are
-- defined in system.
--------------------------------------------------------------------------
type Master_Id is private;
No_Master_Id : constant Master_Id;
type A_List_Id is private;
No_A_List_Id : constant A_List_Id;
--------------------------------------------------------------------------
-- Misc types provided for backward compatibility with
-- earlier releases of VADS. The subprograms in this package are
-- backward compatible with these subtypes.
--
-- Note, day_t is now defined in system.a and not v_i_types.a.
--------------------------------------------------------------------------
subtype A_Task_T is System.Task_Id;
subtype A_Program_T is System.Program_Id;
subtype A_Master_T is Master_Id;
subtype A_Alist_T is A_List_Id;
type Act_Status_T is (Act_Ok, Act_Elab_Err, Act_Except,
Act_Elab_Err_Act_Except);
-- Select statements are implemented with a list of open entry numbers
-- (zero for closed entries); the number of items in this list is passed
-- as a parameter.
type Entry_Record_T is
record
Entry_Id : Integer;
end record;
type A_Entry_Record_T is access Entry_Record_T;
pragma Local_Access (A_Entry_Record_T);
-- Delay records follow entry record in the list that compiler-generated
-- code passes to ts_select_delay.
type Delay_Record_T is
record
Delay_Alt_Return_Info : Integer;
Seconds_To_Delay : Duration;
end record;
type A_Delay_Record_T is access Delay_Record_T;
pragma Local_Access (A_Delay_Record_T);
type Abort_List_T is
record
Tsk : Task_Id;
end record;
-- CIFO option
pragma May_Make_Access_Value (Abort_List_T);
-- CIFO option
type A_Abort_List_T is access Abort_List_T;
pragma Local_Access (A_Abort_List_T);
--------------------------------------------------------------------------
-- Task abort
--------------------------------------------------------------------------
procedure Ts_Abort (Abort_List : in A_Abort_List_T;
Abort_List_Length : in Integer);
function Ts_Abort_One_Task (Tsk : Task_Id) return Boolean;
--------------------------------------------------------------------------
-- Disable/enable the current task from being completed when aborted.
-- These services must be paired. They can be nested. No return, if
-- not nested and the current task has been marked abnormal by a previous
-- abort.
--
-- Currently, not called by the compiler. However, called by Vads Exec
-- services.
--------------------------------------------------------------------------
procedure Ts_Disable_Complete;
procedure Ts_Enable_Complete;
--------------------------------------------------------------------------
-- Task activation
--------------------------------------------------------------------------
function Ts_Init_Activate_List return A_List_Id;
-- This activates a group of tasks at once.
procedure Ts_Activate_List
(Activation_List : A_List_Id; Is_Allocator : Integer);
-- This enters the named task into the runnable pool of tasks.
-- The return_pc parameter is used for debugging purposes.
procedure Ts_Activate (Tsk : in Task_Id; Return_Pc : in Address);
-- DA_RTS
-- Activate a task created with ts_create_simple_task
procedure Ts_Activate_Simple_Task (Tsk : A_Task_T);
-- Set the current task inactive. The task will not keep the program
-- from becoming idle. The da comm library keeps a cache of tasks that
-- are in the inactive state.
procedure Ts_Set_Inactive;
-- DA_RTS
-- Set the current task to a state that is compatible with the
-- debug task. The task will not keep the program
-- from becoming idle.
procedure Ts_Set_Debug_Task;
-- This is called by a newly-activated task to indicate to the RTS
-- that is had completed its activation. This will cause the
-- activating task to unblock.
procedure Ts_Activation_Complete (Act_Status : in Act_Status_T);
function Ts_Activation_Exceptions return Act_Status_T;
--------------------------------------------------------------------------
-- Task attributes
--------------------------------------------------------------------------
-- This is called when the CALLABLE attribute is used.
function Ts_Callable (Tsk : in Task_Id) return Boolean;
-- This implements the 'TERMINATED attribute.
function Ts_Terminated (Tsk : in Task_Id) return Boolean;
-- This returns the number of tasks queued at the entry (of the
-- current task) whose id is passed. This implements the 'COUNT
-- attribute.
function Ts_Entry_Count (Entry_Id : in Integer) return Integer;
--------------------------------------------------------------------------
-- Task rendezvous
--------------------------------------------------------------------------
-- This is called by generated code to due an plain entry call.
-- The task to call is named by the task id passed in 'called_task'.
-- The entry id to do the call on is passed in 'called_entry'.
-- A pointer to the parameters to pass to the accept statement
-- that accepts this call is passed in 'param_block'.
procedure Ts_Call (Called_Task : in Task_Id;
Called_Entry : in Integer;
Param_Block : in Address);
-- This is called by the generated code to do a conditional entry
-- call.
-- This is like 'ts_call' except that is will return immediately
-- with a return value of false if the call cannot be accepted right
-- away.
function Ts_Conditional_Call (Called_Task : in Task_Id;
Called_Entry : in Integer;
Param_Block : in Address) return Boolean;
-- CIFO_TRIVIAL_ENTRY
-- This is called for a conditional entry call to a trivial accept
-- statement. Supports the CIFO TRIVIAL_ENTRY pragma.
function Ts_Trivial_Conditional_Call
(Called_Task : in Task_Id; Called_Entry : in Integer)
return Boolean;
-- CIFO_TRIVIAL_ENTRY
-- This is like 'ts_conditional_call' above except that it will
-- wait for a specified amount of time for the call to go through
-- if it is not immediately able to perform the call. The time
-- to wait for the call it passed in 'timeout' and is in milliseconds.
function Ts_Timed_Call (Timeout : in Duration;
Called_Task : in Task_Id;
Called_Entry : in Integer;
Param_Block : in Address) return Boolean;
-- An entry list is built by the generated code during the
-- evaluation of the guards of a select statment. A pointer to
-- the entry list and it length (in entries) is passed to one of
-- the 'ts_select ...' routines.
--
-- An entry list is a list of small integers that are either zero
-- or the index of an entry. Each integer corresponds to an accept
-- alternative in the select statement being executed. A zero
-- indicates that the alternative is closed. A non-zero value
-- indicates that the alternative is open an its value indicates the
-- entry being accepted.
--
-- If an entry is accepted in a select procedure, its index in the
-- entry list is returned in the 'result' parameter.
--
-- This is called when a select statement having no else, terminate,
-- or delay alternatives is executed.
procedure Ts_Select (User_Entry_List : in A_Entry_Record_T;
Elist_Len : in Integer;
Param_Block : out Address;
Result : out Integer);
-- This is called when an accept statement that is not an alternative
-- of a select statement is executed.
function Ts_Accept (Accepting_Entry : in Integer) return Address;
-- This is called when an accept statement doesn't have any parameters or a
-- "do ... end" sequence of statements. The accept simply serves as a
-- synchronization point. There isn't a subsequent ts_finish_accept.
procedure Ts_Fast_Accept (Accepting_Entry : Integer);
-- CIFO_TRIVIAL_ENTRY
-- This is called for a trivial accept statement. Supports
-- the CIFO TRIVIAL_ENTRY pragma.
procedure Ts_Trivial_Accept (Accepting_Entry : Integer);
-- CIFO_TRIVIAL_ENTRY
-- This is called when a select statment with an else alternative
-- is executed. If the else alternative is taken the 'result'
-- parameter is returned with -1.
procedure Ts_Select_Else (User_Entry_List : in A_Entry_Record_T;
Elist_Len : in Integer;
Param_Block : out Address;
Result : out Integer);
-- This is called when a select statment with a delay alternative(s)
-- is executed.
procedure Ts_Select_Delay (User_Entry_List : in A_Entry_Record_T;
Elist_Len : in Integer;
Dlist_Len : in Integer;
Param_Block : out Address;
Result : out Integer);
-- This is called when a select statment with a terminate alternative
-- is executed. 'termin_open' is true if the terminate alternative
-- is open (i.e., if it has no guard or if its guard is true.
procedure Ts_Select_Terminate (User_Entry_List : in A_Entry_Record_T;
Elist_Len : in Integer;
Termin_Open : in Integer;
Param_Block : out Address;
Result : out Integer);
-- Called when the end of an accept body is reached.
-- If an exception occurred in the body of the accept, the first
-- paramenter is true and the second points to the string that
-- describes the exception.
procedure Ts_Finish_Accept (Exception_Occurred : in Integer;
Exception_String : in Address);
-- CIFO option
-- When called from within a rendezvous, this function returns
-- the task id of the calling task. Otherwise it returns null.
function Ts_Caller return Task_Id;
-- CIFO option
--------------------------------------------------------------------------
-- RTS initialization and main procedure exit
--------------------------------------------------------------------------
-- This routine is called explicity by startup to set up the Ada RTS.
-- If ts_initialize returns, then, the program is ready to exit and
-- it returns the exit status.
function Ts_Initialize (Usr_Link_Block : Link_Block.A_Link_Block_T;
Configuration_Table : V_Usr_Conf_I.
A_Configuration_Table_T;
Main_Pragmas : V_I_Cifo.A_Main_Pragmas_T;
Startup_Continue : Address) return Integer;
-- This is called by the main procedure of a program when it wishes
-- to complete the whole program. This procedure is not called
-- by generated code, it is the last entry in the elaboration table
-- if it is to be called.
procedure Ts_Exit (Status : Integer);
--------------------------------------------------------------------------
-- Task, master and program creation
--------------------------------------------------------------------------
-- This creates a new Ada task. The 'master' parameter is the master
-- id (returned by 'ts_create_master') for the master of the task to
-- be created. 'prio' is a priority in the range 1..10. 'stack_size'
-- is the size of the stack area that the new task requires. 'start'
-- is the address of the first instruction of the task's code.
-- 'entry_count' is the number of entries that the new task has.
function Ts_Create_Task (Master : Master_Id;
Prio : Integer;
Stack_Size : Integer;
Start : Address;
Entry_Count : Integer;
Generic_Param : Address;
Task_Attr : Ada_Krn_Defs.A_Task_Attr_T;
Has_Pragma_Prio : Integer) return Task_Id;
-- This is like 'ts_create_task' above, except that it also enters
-- the task id of the new task in the activation table passed
-- in the 'activate_list' parameter. See the 'ts_activ' package.
function Ts_Create_Task_And_Link (Master : Master_Id;
Prio : Integer;
Stack_Size : Integer;
Start : Address;
Entry_Count : Integer;
Activation_List : A_List_Id;
Generic_Param : Address;
Task_Attr : Ada_Krn_Defs.A_Task_Attr_T;
Has_Pragma_Prio : Integer) return Task_Id;
-- DA_RTS
-- Called to create a simple ada task. This task does not have
-- a master. This task will not make a call to ts_activation_complete
-- and should not be attached to the current task. This task has
-- no entry points and no elaboration address.
--
-- This task might eventually perform other ada tasking semantics
-- like rendezvous, ...
--
-- This task is activated via ts_activate_simple_task.
--
function Ts_Create_Simple_Task (Prio : Integer;
Stack_Size : Natural;
Start : Address;
Task_Attr : Ada_Krn_Defs.A_Task_Attr_T;
Has_Pragma_Prio : Integer) return A_Task_T;
-- DA_RTS
-- CIFO_SYNCHRONIZATION
procedure Ts_Set_Entry_Criteria (Tsk : Task_Id;
Entry_Criteria : V_I_Cifo.Queuing_T);
procedure Ts_Set_Select_Criteria (Tsk : Task_Id; Lexical_Order : Integer);
-- CIFO_SYNCHRONIZATION
-- This returns an id to use in future calls to 'ts_create_task'
-- 'ts_create_task_and_link', and 'ts_complete_master'. The
-- effect of this call is to create an internal RTS structure
-- to keep track of the tasks for whom the current task is
-- master.
function Ts_Create_Master
(Fp : Address; Generic_Param : Address) return Master_Id;
-- This returns the task id of the current task.
function Ts_Tid return Task_Id;
-- This creates and activates a new ada program. It
-- is layered upon the ada_krn_i.program_start service. The
-- following description of its operation is only applicable
-- to the VADS_MICRO for cross targets.
--
-- The first passed parameter is the address of
-- the new program's link_block. The
-- second parameter is a user defined key stored in the new program's
-- control block. This key is passed to the PROGRAM_SWITCH_EVENT
-- callouts. The key may be obtained by routines in the new
-- program via v_i_tasks.get_program_key.
-- This key can be used to point to a list of program arguments.
-- The key for the main program is set to 0 (NO_ADDR). The third
-- parameter is the address of a routine called when the program
-- terminates. It can be set to NO_ADDR for no callout.
--
-- The terminate callout procedure is called as follows:
-- procedure terminate_callout_proc(
--\x09\x09krn_prg:\x09\x09krn_program_id;-- program being terminated
-- key:\x09\x09\x09address);\x09-- its corresponding user defined key
--
-- The terminate_callout_proc must be compiled with stack limit
-- checking suppressed. The PROGRAM_SWITCH_EVENT callout isn't
-- called before calling the terminate_callout_proc. Also, the
-- terminate_callout_proc is called with the underlying kernel's
-- krn_program_id and not the Ada program_id.
function Ts_Create_Program
(User_Link_Block_A : Address;
Key : Address := Memory_Address (2);
Terminate_Callout : Address := No_Addr) return Program_Id;
pragma Inline_Only (Ts_Create_Program);
--------------------------------------------------------------------------
-- Delay and current time
--------------------------------------------------------------------------
-- This returns after delaying for at least the amount of time
-- specified by 'delay_val'. 'delay_val' is internal representation
-- for duration, normally milliseconds.
procedure Ts_Delay (Delay_Val : in Duration);
-- This returns the current time, wherein, duration_time has been
-- normalized to be less than a day.
procedure Ts_Current_Time (Day : out Day_T; Sec : out Duration);
--------------------------------------------------------------------------
-- Task and master completion/termination
--------------------------------------------------------------------------
-- This completes the calling task. This never returns and
-- the calling task never executes again.
procedure Ts_Complete_Task;
-- This waits for the completion of all of the tasks whose master
-- is named by the master id passed. Then the calling task
-- is completed just as it is in 'ts_complete_task'.
procedure Ts_Complete_Master (Master : in Master_Id);
procedure Ts_Exception_Master (Master : in Master_Id);
procedure Ts_Terminate_List (Activation_List : in out A_List_Id);
-- CIFO option
-- Installs a cleanup procedure used to recover resources
-- allocated by the CIFO. Called by the RTS when a task terminates.
procedure Ts_Cifo_Term_Callout (Proc : System.Address);
-- CIFO option
--------------------------------------------------------------------------
-- Stack Limit
--------------------------------------------------------------------------
-- This returns the stack_limit of the current task. Handles
-- the case where the caller task is executing code in a fast rendezvous
-- using the acceptor's stack.
--
-- When the stack limit is stored in a register (g4 for SPARC, s7 for
-- MIPS), the compiler emits a call to this routine whenever
-- an Ada subprogram is called from 'C'. For MP Ada, the compiler
-- can no longer reference the stack limit directly from memory.
function Ts_Get_Stack_Limit return Address;
--------------------------------------------------------------------------
-- Exception information
--------------------------------------------------------------------------
-- Gets/puts the last exception information for the current task.
-- If in an ISR, accesses the last exception information for the current
-- program.
procedure Ts_Get_Last_Exception (Id : out Address; Pc : out Address);
procedure Ts_Put_Last_Exception (Id : Address; Pc : Address);
--------------------------------------------------------------------------
-- Interrupt Entry
--------------------------------------------------------------------------
-- Attaches interrupt entry in current task to interrupt vector that can
-- be posted by interrupt handler
procedure Ts_Attach_Interrupt (Attached_Entry : Integer;
Intr_Entry : Ada_Krn_Defs.A_Intr_Entry_T);
-- Detaches all interrupt entries in passed task from signals.
procedure Ts_Detach_Interrupt (Tsk : in Task_Id);
--------------------------------------------------------------------------
-- Interrupt Entry ISRs
--------------------------------------------------------------------------
-- Attaches isr to interrupt vector specified by the interrupt entry
function Ts_Attach_Isr
(Intr_Entry : Ada_Krn_Defs.A_Intr_Entry_T; Isr : Address)
return Address;
-- Detaches isr from interrupt vector specified by the interrupt entry
function Ts_Detach_Isr
(Intr_Entry : Ada_Krn_Defs.A_Intr_Entry_T) return Address;
--------------------------------------------------------------------------
-- Interrupt Task
--------------------------------------------------------------------------
-- Creates a task that repetitively waits for and then processes an
-- interrupt. The created task is inactive until ts_activate_intr_task
-- is called.
function Ts_Create_Intr_Task
(Prio : Integer;
Stack_Size : Integer;
Start : Address;
Intr_Vector : Ada_Krn_Defs.Intr_Vector_Id_T;
Handler : System.Address;
Task_Attr : Ada_Krn_Defs.A_Task_Attr_T := null) return Task_Id;
-- Makes a previously created interrupt task runnable.
procedure Ts_Activate_Intr_Task (Intr_Task : Task_Id);
-- This completes the calling interrupt task.
procedure Ts_Complete_Intr_Task;
-- Gets the interrupt vector for the current interrupt task.
-- The interrupt vector was passed when the interrupt task was created.
function Ts_Get_Intr_Task_Vector return Ada_Krn_Defs.Intr_Vector_Id_T;
-- Gets the handler for the current interrupt task.
-- The handler was passed when the interrupt task was created.
function Ts_Get_Intr_Task_Handler return Address;
type Intr_Task_State_T is (Intr_Task_Ready, Intr_Task_Waiting);
-- Sets the Ada tasking state for the current interrupt task
procedure Ts_Set_Intr_Task_State (Intr_Task_State : Intr_Task_State_T);
private
type Master_Id is new Unsigned_Types.Unsigned_Integer;
No_Master_Id : constant Master_Id := 0;
type A_List_Id is new Unsigned_Types.Unsigned_Integer;
No_A_List_Id : constant A_List_Id := 0;
pragma Interface (Ada, Ts_Abort);
pragma Interface_Name (Ts_Abort, "TS_ABORT");
pragma Interface (Ada, Ts_Abort_One_Task);
pragma Interface_Name (Ts_Abort_One_Task, "TS_ABORT_ONE_TASK");
pragma Interface (Ada, Ts_Disable_Complete);
pragma Interface_Name (Ts_Disable_Complete, "TS_DISABLE_COMPLETE");
pragma Interface (Ada, Ts_Enable_Complete);
pragma Interface_Name (Ts_Enable_Complete, "TS_ENABLE_COMPLETE");
pragma Interface (Ada, Ts_Init_Activate_List);
pragma Interface_Name (Ts_Init_Activate_List, "TS_INIT_ACTIVATE_LIST");
pragma Interface (Ada, Ts_Activate_List);
pragma Interface_Name (Ts_Activate_List, "TS_ACTIVATE_LIST");
pragma Interface (Ada, Ts_Activate);
pragma Interface_Name (Ts_Activate, "TS_ACTIVATE");
-- DA_RTS
pragma Interface (Ada, Ts_Activate_Simple_Task);
pragma Interface_Name (Ts_Activate_Simple_Task, "TS_ACTIVATE_SIMPLE_TASK");
pragma Interface (Ada, Ts_Set_Inactive);
pragma Interface_Name (Ts_Set_Inactive, "TS_SET_INACTIVE");
-- DA_RTS
pragma Interface (Ada, Ts_Set_Debug_Task);
pragma Interface_Name (Ts_Set_Debug_Task, "TS_SET_DEBUG_TASK");
pragma Interface (Ada, Ts_Activation_Complete);
pragma Interface_Name (Ts_Activation_Complete, "TS_ACTIVATION_COMPLETE");
pragma Interface (Ada, Ts_Activation_Exceptions);
pragma Interface_Name (Ts_Activation_Exceptions,
"TS_ACTIVATION_EXCEPTIONS");
pragma Interface (Ada, Ts_Callable);
pragma Interface_Name (Ts_Callable, "TS_CALLABLE");
-- CIFO option
pragma Interface (Ada, Ts_Caller);
pragma Interface_Name (Ts_Caller, "TS_CALLER");
-- CIFO option
pragma Interface (Ada, Ts_Terminated);
pragma Interface_Name (Ts_Terminated, "TS_TERMINATED");
pragma Interface (Ada, Ts_Entry_Count);
pragma Interface_Name (Ts_Entry_Count, "TS_ENTRY_COUNT");
pragma Interface (Ada, Ts_Call);
pragma Interface_Name (Ts_Call, "TS_CALL");
pragma Interface (Ada, Ts_Conditional_Call);
pragma Interface_Name (Ts_Conditional_Call, "TS_CONDITIONAL_CALL");
-- CIFO_TRIVIAL_ENTRY
pragma Interface (Ada, Ts_Trivial_Conditional_Call);
pragma Interface_Name (Ts_Trivial_Conditional_Call,
"TS_TRIVIAL_CONDITIONAL_CALL");
-- CIFO_TRIVIAL_ENTRY
pragma Interface (Ada, Ts_Timed_Call);
pragma Interface_Name (Ts_Timed_Call, "TS_TIMED_CALL");
pragma Interface (Ada, Ts_Select);
pragma Interface_Name (Ts_Select, "TS_SELECT");
pragma Interface (Ada, Ts_Accept);
pragma Interface_Name (Ts_Accept, "TS_ACCEPT");
pragma Interface (Ada, Ts_Fast_Accept);
pragma Interface_Name (Ts_Fast_Accept, "TS_FAST_ACCEPT");
-- CIFO_TRIVIAL_ENTRY
pragma Interface (Ada, Ts_Trivial_Accept);
pragma Interface_Name (Ts_Trivial_Accept, "TS_TRIVIAL_ACCEPT");
-- CIFO_TRIVIAL_ENTRY
pragma Interface (Ada, Ts_Select_Else);
pragma Interface_Name (Ts_Select_Else, "TS_SELECT_ELSE");
pragma Interface (Ada, Ts_Select_Delay);
pragma Interface_Name (Ts_Select_Delay, "TS_SELECT_DELAY");
pragma Interface (Ada, Ts_Select_Terminate);
pragma Interface_Name (Ts_Select_Terminate, "TS_SELECT_TERMINATE");
pragma Interface (Ada, Ts_Finish_Accept);
pragma Interface_Name (Ts_Finish_Accept, "TS_FINISH_ACCEPT");
pragma Interface (Ada, Ts_Initialize);
pragma Interface_Name (Ts_Initialize, "TS_INITIALIZE");
pragma Interface (Ada, Ts_Exit);
pragma Interface_Name (Ts_Exit, "TS_EXIT");
pragma Interface (Ada, Ts_Create_Task);
pragma Interface_Name (Ts_Create_Task, "TS_CREATE_TASK");
pragma Interface (Ada, Ts_Create_Task_And_Link);
pragma Interface_Name (Ts_Create_Task_And_Link, "TS_CREATE_TASK_AND_LINK");
-- DA_RTS
pragma Interface (Ada, Ts_Create_Simple_Task);
pragma Interface_Name (Ts_Create_Simple_Task, "TS_CREATE_SIMPLE_TASK");
-- DA_RTS
-- CIFO_SYNCHRONIZATION
pragma Interface (Ada, Ts_Set_Entry_Criteria);
pragma Interface_Name (Ts_Set_Entry_Criteria, "TS_SET_ENTRY_CRITERIA");
pragma Interface (Ada, Ts_Set_Select_Criteria);
pragma Interface_Name (Ts_Set_Select_Criteria, "TS_SET_SELECT_CRITERIA");
-- CIFO_SYNCHRONIZATION
pragma Interface (Ada, Ts_Create_Master);
pragma Interface_Name (Ts_Create_Master, "TS_CREATE_MASTER");
pragma Interface (Ada, Ts_Tid);
pragma Interface_Name (Ts_Tid, "TS_TID");
pragma Interface (Ada, Ts_Delay);
pragma Interface_Name (Ts_Delay, "TS_DELAY");
pragma Interface (Ada, Ts_Current_Time);
pragma Interface_Name (Ts_Current_Time, "TS_CURRENT_TIME");
pragma Interface (Ada, Ts_Complete_Task);
pragma Interface_Name (Ts_Complete_Task, "TS_COMPLETE_TASK");
pragma Interface (Ada, Ts_Complete_Master);
pragma Interface_Name (Ts_Complete_Master, "TS_COMPLETE_MASTER");
pragma Interface (Ada, Ts_Exception_Master);
pragma Interface_Name (Ts_Exception_Master, "TS_EXCEPTION_MASTER");
pragma Interface (Ada, Ts_Terminate_List);
pragma Interface_Name (Ts_Terminate_List, "TS_TERMINATE_LIST");
-- CIFO option
pragma Interface (Ada, Ts_Cifo_Term_Callout);
pragma Interface_Name (Ts_Cifo_Term_Callout, "TS_CIFO_TERM_CALLOUT");
-- CIFO option
pragma Interface (Ada, Ts_Get_Stack_Limit);
pragma Interface_Name (Ts_Get_Stack_Limit, "TS_GET_STACK_LIMIT");
pragma Interface (Ada, Ts_Get_Last_Exception);
pragma Interface_Name (Ts_Get_Last_Exception, "TS_GET_LAST_EXCEPTION");
pragma Interface (Ada, Ts_Put_Last_Exception);
pragma Interface_Name (Ts_Put_Last_Exception, "TS_PUT_LAST_EXCEPTION");
pragma Interface (Ada, Ts_Attach_Interrupt);
pragma Interface_Name (Ts_Attach_Interrupt, "TS_ATTACH_INTERRUPT");
pragma Interface (Ada, Ts_Detach_Interrupt);
pragma Interface_Name (Ts_Detach_Interrupt, "TS_DETACH_INTERRUPT");
pragma Interface (Ada, Ts_Attach_Isr);
pragma Interface_Name (Ts_Attach_Isr, "TS_ATTACH_ISR");
pragma Interface (Ada, Ts_Detach_Isr);
pragma Interface_Name (Ts_Detach_Isr, "TS_DETACH_ISR");
pragma Interface (Ada, Ts_Create_Intr_Task);
pragma Interface_Name (Ts_Create_Intr_Task, "TS_CREATE_INTR_TASK");
pragma Interface (Ada, Ts_Activate_Intr_Task);
pragma Interface_Name (Ts_Activate_Intr_Task, "TS_ACTIVATE_INTR_TASK");
pragma Interface (Ada, Ts_Complete_Intr_Task);
pragma Interface_Name (Ts_Complete_Intr_Task, "TS_COMPLETE_INTR_TASK");
pragma Interface (Ada, Ts_Get_Intr_Task_Vector);
pragma Interface_Name (Ts_Get_Intr_Task_Vector, "TS_GET_INTR_TASK_VECTOR");
pragma Interface (Ada, Ts_Get_Intr_Task_Handler);
pragma Interface_Name (Ts_Get_Intr_Task_Handler,
"TS_GET_INTR_TASK_HANDLER");
pragma Interface (Ada, Ts_Set_Intr_Task_State);
pragma Interface_Name (Ts_Set_Intr_Task_State, "TS_SET_INTR_TASK_STATE");
end V_I_Taskop;
nblk1=1f
nid=0
hdr6=3e
[0x00] rec0=20 rec1=00 rec2=01 rec3=006
[0x01] rec0=17 rec1=00 rec2=02 rec3=006
[0x02] rec0=1a rec1=00 rec2=03 rec3=06e
[0x03] rec0=18 rec1=00 rec2=04 rec3=05e
[0x04] rec0=18 rec1=00 rec2=05 rec3=07a
[0x05] rec0=17 rec1=00 rec2=06 rec3=078
[0x06] rec0=15 rec1=00 rec2=07 rec3=01c
[0x07] rec0=12 rec1=00 rec2=08 rec3=072
[0x08] rec0=14 rec1=00 rec2=09 rec3=090
[0x09] rec0=15 rec1=00 rec2=0a rec3=018
[0x0a] rec0=13 rec1=00 rec2=0b rec3=030
[0x0b] rec0=14 rec1=00 rec2=0c rec3=066
[0x0c] rec0=13 rec1=00 rec2=0d rec3=050
[0x0d] rec0=11 rec1=00 rec2=0e rec3=044
[0x0e] rec0=14 rec1=00 rec2=0f rec3=04e
[0x0f] rec0=16 rec1=00 rec2=10 rec3=056
[0x10] rec0=14 rec1=00 rec2=11 rec3=01a
[0x11] rec0=13 rec1=00 rec2=12 rec3=066
[0x12] rec0=16 rec1=00 rec2=13 rec3=014
[0x13] rec0=16 rec1=00 rec2=14 rec3=06c
[0x14] rec0=15 rec1=00 rec2=15 rec3=078
[0x15] rec0=17 rec1=00 rec2=16 rec3=00a
[0x16] rec0=16 rec1=00 rec2=17 rec3=016
[0x17] rec0=17 rec1=00 rec2=18 rec3=00e
[0x18] rec0=12 rec1=00 rec2=19 rec3=042
[0x19] rec0=18 rec1=00 rec2=1a rec3=012
[0x1a] rec0=13 rec1=00 rec2=1b rec3=03a
[0x1b] rec0=14 rec1=00 rec2=1c rec3=048
[0x1c] rec0=15 rec1=00 rec2=1d rec3=02e
[0x1d] rec0=10 rec1=00 rec2=1e rec3=074
[0x1e] rec0=0a rec1=00 rec2=1f rec3=000
tail 0x2175423c8874f7c17bb48 0x42a00088462060003