CVS difference for ai12s/ai12-0117-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0117-1.txt

--- ai12s/ai12-0117-1.txt	2014/06/20 04:10:14	1.1
+++ ai12s/ai12-0117-1.txt	2014/07/15 02:00:40	1.2
@@ -1,5 +1,6 @@
-!standard D.7(10.8/3)                               14-06-19    AI12-0117-1/01
+!standard D.7(10.8/3)                               14-07-14    AI12-0117-1/02
 !class Amendment 14-06-19
+!status promising 9-0-0  14-06-28
 !status work item 14-06-19
 !status received 14-06-19
 !priority Low
@@ -13,8 +14,13 @@
 
 The Ravenscar Profile on multiprocessors requires that all tasks are assigned
 to CPUs. In order to do this safely, we need a new restriction to be defined
-to ensure that all tasks are assigned to a CPU.
+to ensure that every task is assigned to a known, particular CPU.
 
+We need to know the CPU of each task so that it is possible to analyze the
+scheduling of each task, since each CPU has a separate ready queue. This means
+that two tasks assigned to the same CPU will behave differently than the same
+two tasks assigned to different CPUs.
+
 !proposal
 
 (See Summary.)
@@ -26,13 +32,11 @@
 Add a new restriction after D.7(10.8/3):
 
 No_Tasks_Unassigned_To_CPU
-    No aspect CPU is specified to be statically Not_A_Specific_CPU.
-    If there is any task in the partition which has aspect CPU specified,
-    then all tasks in the partition have aspect CPU or Dispatching_Domain
-    specified.
+    No CPU aspect is specified to be statically equal to Not_A_Specific_CPU.
+    The CPU aspect is specified for the environment task.
 
 AARM Ramification: If this restriction is used in a context for which
-restriction Only_Static_Task_Assignment is not in effect, then tasks
+restriction No_Dynamic_CPU_Assignment is not in effect, then tasks
 could specify CPU with a non-static expression having the value
 Not_A_Specific_CPU. Thus it is of limited utility outside of Ravenscar
 and similar environments.
@@ -44,16 +48,19 @@
     No_Tasks_Unassigned_To_CPU
 
 to signify that (1) Not_A_Specific_CPU is not allowed in aspect CPU or 
-pragma CPU, and (2) either no CPU aspect is used in the program so that 
-all tasks get assigned to the environment task's CPU or all tasks have a 
-CPU aspect.
-
-Note that the restriction allows either CPU or Dispatching_Domain to
-be specified, so that it can be used in non-Ravenscar contexts. We could
-have included a run-time check that the CPU is never specified to
-Not_A_Specific_CPU (raising an exception if that is true), but it would
-seem to get in the way of the primary purpose of this restriction (which
-is for Ravenscar).
+pragma CPU, and (2) the environment task has a CPU specified.
+
+This ensures that all tasks are assigned to a known, particular CPU. (If a
+task does not have the CPU specified, it will run on the CPU of the task that
+activated it -- this is the standard semantics for CPU assignment.)
+
+The primary purpose of this restriction is to ensure that there is no
+implementation-defined assignment of CPUs when No_Dynamic_CPU_Assignment
+is in effect (including when the Ravenscar profile is in effect). As such,
+we don't try to detect the non-static setting of CPU to Not_A_Specific_CPU.
+We could have included a run-time check that the CPU is never specified to
+Not_A_Specific_CPU (raising an exception if that is true), but that would
+be an unnecessary compilation in the context of No_Dynamic_CPU_Assignment.
 
 !ASIS
 
@@ -61,8 +68,8 @@
 
 !ACATS test
 
-An ACATS C-Test is needed to verify that the pragma and restriction is
-implemented as specified.
+An ACATS C-Test is needed to verify that the restriction is implemented
+as specified.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent