CVS difference for ais/ai-00357.txt
--- ais/ai-00357.txt 2004/10/26 23:52:26 1.10
+++ ais/ai-00357.txt 2004/12/09 19:55:35 1.11
@@ -1,5 +1,7 @@
-!standard D.03 (00) 04-10-10 AI95-00357/06
+!standard D.03 (00) 04-12-02 AI95-00357/07
!class amendment 03-09-27
+!status Amendment 200Y 04-12-02
+!status ARG Approved 10-0-0 04-11-20
!status work item 03-09-27
!status received 03-09-27
@@ -113,7 +115,7 @@
D.2.6 Earliest Deadline First Dispatching
The deadline of a task is an indication of the urgency of the task; it
-represents a point on an ideal physical time-line. Unless otherwise specified,
+represents a point on an ideal physical time line. Unless otherwise specified,
whenever tasks compete for processors or other implementation-defined
resources, the resources are allocated to the task with the earliest deadline.
@@ -134,7 +136,7 @@
-package Ada.Dispatching.EDF_Dispatching is
+package Ada.Dispatching.EDF is
subtype Deadline is Ada.Real_Time.Time;
Default_Deadline : constant Deadline :=
@@ -143,10 +145,10 @@
Delay_Until_Time : in Ada.Real_Time.Time;
- TS : in Ada.Real_Time.Time_Span);
+ Deadline_Offset : in Ada.Real_Time.Time_Span);
function Get_Deadline(T : in Ada.Task_Identification.Task_ID :=
Ada.Task_Identification.Current_Task) return Deadline;
@@ -188,27 +190,25 @@
The procedure Delay_Until_And_Set_Deadline delays the calling task until time
Delay_Until_Time. When the task becomes runnable again it will have deadline
-Delay_Until_Time + TS.
+Delay_Until_Time + Deadline_Offset.
-Setting the deadline of a task to a new value takes place as soon as
-is practical but not while the task is performing a protected action.
-This setting occurs no later than the next abort completion point
-of the task (see 9.8). If the task is currently on a ready queue it
-is removed and re-entered on to the ready queue determined by the
+On a system with a single processor, the setting of a task's deadline
+to the new value occurs immediately at the first point that is outside the
+execution of an abort-deferred operation. If the task is currently on a ready
+queue it is removed and re-entered on to the ready queue determined by the
rules defined below.
When EDF_Across_Priorities is specified for priority range Low..High
all ready queues in this range are ordered by deadline.
-The task at the head of a queue is the one with the earliest
+The task at the head of a queue is the one with the earliest deadline.
A task dispatching point occurs for the currently running task T to
-which policy EDF_Within_Priorities applies whenever:
+which policy EDF_Across_Priorities applies whenever:
- o a change to the deadline of T takes effect; or
+ o a change to the deadline of T occurs; or
o a decrease to the deadline of any task on a ready queue for
- that processor takes effect and the new deadline is earlier than
+ that processor occurs and the new deadline is earlier than
that of the running task; or
o there is a non-empty ready queue for that processor
@@ -217,21 +217,21 @@
The currently running task is said to be preempted and is returned to
the ready queue for its active priority.
-Whenever a task T to which policy EDF_Within_Priorities applies is
+Whenever a task T to which policy EDF_Across_Priorities applies is
added to a ready queue, other than when it is preempted, it is placed on
-the ready queue with the highest priority R, if one exists, such that:
+the ready queue with the highest priority P, if one exists, such that:
o a task is executing within a protected object with ceiling
- priority R; and
+ priority P; and
o task T has an earlier deadline than any task executing within
- a protected object with ceiling priority R; and
- o the base priority of task T is greater than R.
+ a protected object with ceiling priority P; and
+ o the base priority of task T is greater than P.
If no such ready queue exists the task is added to the ready
queue for the lowest priority in the range specified as
When the setting of the base priority of a task takes effect and the
new priority is in the range specified as EDF_Across_Priorities,
-the task is added to the ready queues.
+the task is added to the ready queue.
When a task is chosen for execution it runs with the active priority
of the ready queue from which the task was taken.
@@ -257,6 +257,12 @@
of this package and the corresponding task object no longer exists,
the execution of the program is erroneous.
+On a multiprocessor, the implementation shall document any conditions that
+cause the completion of the setting of a task's deadline to be delayed later
+than what is specified for a single procressor.
If two adjacent priority ranges, A..B and B+1..C are specified to have policy
@@ -327,6 +333,7 @@
at the front of its ready queue even if its deadline is later than
the next task on the queue.
Questions? Ask the ACAA Technical Agent