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

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

--- ai12s/ai12-0117-1.txt	2014/07/15 02:00:40	1.2
+++ ai12s/ai12-0117-1.txt	2014/11/18 06:52:29	1.3
@@ -1,5 +1,7 @@
-!standard D.7(10.8/3)                               14-07-14    AI12-0117-1/02
-!class Amendment 14-06-19
+!standard D.7(10.8/3)                               14-11-17    AI12-0117-1/03
+!class binding interpretation 14-10-19
+!status Corrigendum 2015 14-11-17
+!status ARG Approved 7-0-1  14-10-19
 !status promising 9-0-0  14-06-28
 !status work item 14-06-19
 !status received 14-06-19
@@ -10,7 +12,7 @@
 
 Add restriction No_Tasks_Unassigned_To_CPU to provide safe use of Ravenscar.
 
-!problem
+!question
 
 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
@@ -21,8 +23,10 @@
 that two tasks assigned to the same CPU will behave differently than the same
 two tasks assigned to different CPUs.
 
-!proposal
+Should we define such a restriction? (Yes.)
 
+!recommendation
+
 (See Summary.)
 
 !wording
@@ -32,14 +36,17 @@
 Add a new restriction after D.7(10.8/3):
 
 No_Tasks_Unassigned_To_CPU
-    No CPU aspect is specified to be statically equal to Not_A_Specific_CPU.
-    The CPU aspect is specified for the environment task.
+   The CPU aspect is specified for the environment task. No CPU aspect is
+   specified to be statically equal to Not_A_Specific_CPU. If aspect CPU
+   is specified (dynamically) to the value Not_A_Specific_CPU, then
+   Program_Error is raised. If Set_CPU or Delay_Until_And_Set_CPU are called
+   with the CPU parameter equal to Not_A_Specific_CPU, then Program_Error is
+   raised.
 
 AARM Ramification: If this restriction is used in a context for which
-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.
+restriction No_Dynamic_CPU_Assignment is in effect, then no runtime check
+is needed when specifying the CPU aspect. If the restriction is used with
+the Ravenscar profile, no runtime checks are needed.
 
 !discussion
 
@@ -47,20 +54,33 @@
 
     No_Tasks_Unassigned_To_CPU
 
-to signify that (1) Not_A_Specific_CPU is not allowed in aspect CPU or 
-pragma CPU, and (2) the environment task has a CPU specified.
+to signify that (1) no task is assigned a CPU value of Not_A_Specific_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.
+task does not have a specified CPU, it will run on the CPU of the task that
+activated it -- that is the standard semantics for CPU assignment. Thus
+we only have to ensure that the environment task has a specified CPU and
+that no task is explicitly assigned Not_A_Specific_CPU.)
+
+The purpose of this restriction is to ensure that there is no
+implementation-defined assignment of CPUs; that ensures that the scheduling
+of tasks can be analyzed.
+
+!corrigendum D.7(10.8/3)
+
+@dinsa
+@xhang<@xterm<No_Specific_Termination_Handlers>
+There is no use of a @fa<name> denoting the Set_Specific_Handler
+and Specific_Handler subprograms in Task_Termination.>
+@dinst
+@xhang<@xterm<No_Tasks_Unassigned_To_CPU>
+The CPU aspect is specified for the environment task. No CPU aspect is
+specified to be statically equal to Not_A_Specific_CPU. If aspect CPU
+is specified (dynamically) to the value Not_A_Specific_CPU, then
+Program_Error is raised. If Set_CPU or Delay_Until_And_Set_CPU are called
+with the CPU parameter equal to Not_A_Specific_CPU, then Program_Error is
+raised.>
 
 !ASIS
 
@@ -68,8 +88,8 @@
 
 !ACATS test
 
-An ACATS C-Test is needed to verify that the restriction is implemented
-as specified.
+An ACATS B-Test and C-Test is needed to verify that the restriction is
+implemented as specified.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent