Annotated Ada Reference ManualLegal Information
Contents   Index   References   Search   Previous   Next 

D.9 Delay Accuracy

1
[This clause specifies performance requirements for the delay_statement. The rules apply both to delay_relative_statement and to delay_until_statement. Similarly, they apply equally to a simple delay_statement and to one which appears in a delay_alternative.]

Dynamic Semantics

2
The effect of the delay_statement for Real_Time.Time is defined in terms of Real_Time.Clock: 
3
4
5
{potentially blocking operation (delay_statement) [partial]} {blocking, potentially (delay_statement) [partial]} A simple delay_statement with a negative or zero value for the expiration time does not cause the calling task to be blocked; it is nevertheless a potentially blocking operation (see 9.5.1).
6/2
When a delay_statement appears in a delay_alternative of a timed_entry_call the selection of the entry call is attempted, regardless of the specified expiration time. When a delay_statement appears in a select_alternative selective_accept_alternative, and a call is queued on one of the open entries, the selection of that entry call proceeds, regardless of the value of the delay expression.
6.a
Ramification: The effect of these requirements is that one has to always attempt a rendezvous, regardless of the value of the delay expression. This can be tested by issuing a timed_entry_call with an expiration time of zero, to an open entry. 

Documentation Requirements

7
The implementation shall document the minimum value of the delay expression of a delay_relative_statement that causes the task to actually be blocked. 
7.a/2
Documentation Requirement: The minimum value of the delay expression of a delay_relative_statement that causes a task to actually be blocked.
8
The implementation shall document the minimum difference between the value of the delay expression of a delay_until_statement and the value of Real_Time.Clock, that causes the task to actually be blocked. 
8.a/2
This paragraph was deleted.Implementation defined: Implementation-defined aspects of delay_statements.
8.b/2
Documentation Requirement: The minimum difference between the value of the delay expression of a delay_until_statement and the value of Real_Time.Clock, that causes the task to actually be blocked.

Metrics

9
The implementation shall document the following metrics: 
10
11
12
13
13.a/2
Documentation Requirement: The metrics for delay statements.
NOTES
14/2
This paragraph was deleted.40  {AI95-00355-01} The execution time of a delay_statement that does not cause the task to be blocked (e.g. “delay 0.0;” ) is of interest in situations where delays are used to achieve voluntary round-robin task dispatching among equal-priority tasks.

Wording Changes from Ada 83

14.a
The rules regarding a timed_entry_call with a very small positive Duration value, have been tightened to always require the check whether the rendezvous is immediately possible.

Wording Changes from Ada 95

14.b/2
{AI95-00355-01} The note about “voluntary round-robin’, while still true, has been deleted as potentially confusing as it is describing a different kind of round-robin than is defined by the round-robin dispatching policy.

Contents   Index   References   Search   Previous   Next 
Ada-Europe Sponsored by Ada-Europe