Next: , Previous: D.8, Up: Annex D


D.9 Delay Accuracy

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

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, 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.

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.{00355AI95−00355−01}
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

{00355AI95−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.