AI22-0128-1

!standard D.2.6(13/5)                                  25-04-18  AI22-0128-1/02

!class Binding Interpretation 25-03-06

!status Amendment 1-2022  25-03-21

!status WG9 Approved 25-07-18

!status ARG Approved  13-0-0  25-03-19

!status work item 25-03-06

!status received 25-01-09

!assigned author Steve Baird

!submitter Randy Brukardt

!priority Low

!difficulty Easy

!qualifier Clarification

!subject Evaluation of Relative_Deadline aspect

!summary

State explicitly when the specified Relative_Deadline expression is to be evaluated.

!issue

Unlike similar aspects, the wording for the Relative_Deadline aspect does not explicitly state when the specified expression is to be evaluated.

!recommendation

Use wording more similar to what is already used, for example, for the Priority aspect.

!wording

Modify D.2.6(13/5):

The initial absolute deadline for a task with a specified Relative_Deadline is the result of adding the [value returned by]{results of evaluating both} a call {to}[of] Real_Time.Clock {and}[ to the value of] the expression specified as the Relative_Deadline aspect, where [this entire computation, including the call of Real_Time.Clock, is]{both evaluations (and the addition) are} performed between task creation and the start of its activation. If the aspect Relative_Deadline is not specified, then the initial absolute deadline of a task is the value of Default_Deadline (Ada.Real_Time.Time_Last). The environment task is also given an initial deadline by this rule, using the value of the Relative_Deadline aspect of the main subprogram (if any).

!discussion

Although the previous wording mentioned “the value of the expression”, it did not talk explicitly about when the specified expression is evaluated. It also used “computation” when it could have used the defined term evaluation.

!example

None.

!corrigendum D.2.6(13/5)

@drepl

The initial absolute deadline for a task with a specified Relative_Deadline is the result of adding the value returned by a call of Real_Time.Clock to the value of the @fa{expression} specified as the Relative_Deadline aspect, where this entire computation, including the call of Real_Time.Clock, is performed between task creation and the start of its activation. If the aspect Relative_Deadline is not specified, then the initial absolute deadline of a task is the value of Default_Deadline (Ada.Real_Time.Time_Last). The environment task is also given an initial deadline by this rule, using the value of the Relative_Deadline aspect of the main subprogram (if any).

@dby

The initial absolute deadline for a task with a specified Relative_Deadline is the result of adding the results of evaluating both a call to Real_Time.Clock and the @fa{expression} specified as the Relative_Deadline aspect, where both evaluations (and the addition) are performed between task creation and the start of its activation. If the aspect Relative_Deadline is not specified, then the initial absolute deadline of a task is the value of Default_Deadline (Ada.Real_Time.Time_Last). The environment task is also given an initial deadline by this rule, using the value of the Relative_Deadline aspect of the main subprogram (if any).

!ACATS test

No new test needed, this is just clarifying the existing wording.

!appendix

This issue was originally raised when constructing AI22-0121-1, see the meeting minutes for the January 2025 ARG meeting.