Contents Index Previous Next
C.7.1 The Package Task_Identification
Static Semantics
1
The following language-defined
library package exists:
2
package Ada.Task_Identification is
type Task_ID is private;
Null_Task_ID : constant Task_ID;
function "=" (Left, Right : Task_ID) return Boolean;
3/1
{8652/0070}
function Image (T : Task_ID) return String;
function Current_Task return Task_ID;
procedure Abort_Task (T : in out Task_ID);
4
function Is_Terminated(T : Task_ID) return Boolean;
function Is_Callable (T : Task_ID) return Boolean;
private
... -- not specified by the language
end Ada.Task_Identification;
Dynamic Semantics
5
A value of the type Task_ID identifies an existent
task. The constant Null_Task_ID does not identify any task. Each object
of the type Task_ID is default initialized to the value of Null_Task_ID.
6
The function "=" returns True if and
only if Left and Right identify the same task or both have the value
Null_Task_ID.
7
The function Image returns an implementation-defined
string that identifies T. If T equals Null_Task_ID, Image returns an
empty string.
7.a
Implementation defined: The
result of the Task_Identification.Image attribute.
8
The function Current_Task returns a value that
identifies the calling task.
9
The effect of Abort_Task is the same as
the
abort_statement for the task identified
by T. [In addition, if T identifies the environment task, the entire partition
is aborted, See
E.1.]
10
The functions Is_Terminated and Is_Callable return
the value of the corresponding attribute of the task identified by T.
10.a.1/1
Ramification: {8652/0115}
These routines can be called with an argument identifying the environment
task. Is_Terminated will always be False for such a call, but Is_Callable (usually
True) could be False if the environment task is waiting for the termination
of dependent tasks. Thus, a dependent task can use Is_Callable to determine
if the main subprogram has completed.
11
For a prefix
T that is of a task type [(after any implicit dereference)], the following
attribute is defined:
12
- T'Identity
-
Yields a value of the type Task_ID
that identifies the task denoted by T.
13
For a prefix
E that denotes an entry_declaration,
the following attribute is defined:
14
- E'Caller
-
Yields a value of the type Task_ID
that identifies the task whose call is now being serviced. Use of this
attribute is allowed only inside an entry_body
or accept_statement corresponding
to the entry_declaration denoted
by E.
15
{Program_Error (raised by failure
of run-time check)} Program_Error is raised
if a value of Null_Task_ID is passed as a parameter to Abort_Task, Is_Terminated,
and Is_Callable.
16
{potentially blocking
operation (Abort_Task) [partial]} {blocking,
potentially (Abort_Task) [partial]} Abort_Task
is a potentially blocking operation (see
9.5.1).
Bounded (Run-Time) Errors
17
{bounded error (cause) [partial]}
It is a bounded error to call the Current_Task function
from an entry body or an interrupt handler.
{Program_Error
(raised by failure of run-time check)} Program_Error
is raised, or an implementation-defined value of the type Task_ID is
returned.
17.a
Implementation defined: The
value of Current_Task when in a protected entry or interrupt handler.
17.b
Implementation Note: This
value could be Null_Task_ID, or the ID of some user task, or that of
an internal task created by the implementation.
Erroneous Execution
18
{erroneous execution (cause)
[partial]} If a value of Task_ID is passed
as a parameter to any of the operations declared in this package (or
any language-defined child of this package), and the corresponding task
object no longer exists, the execution of the program is erroneous.
Documentation Requirements
19
The implementation shall document the effect
of calling Current_Task from an entry body or interrupt handler.
19.a
Implementation defined: The
effect of calling Current_Task from an entry body or interrupt handler.
20
10 This package is intended for use
in writing user-defined task scheduling packages and constructing server tasks.
Current_Task can be used in conjunction with other operations requiring a task
as an argument such as Set_Priority (see D.5).
21
11 The function Current_Task
and the attribute Caller can return a Task_ID value that identifies the
environment task.
Contents Index Previous Next Legal