Version 1.2 of ai12s/ai12-0117-1.txt

Unformatted version of ai12s/ai12-0117-1.txt version 1.2
Other versions for file ai12s/ai12-0117-1.txt

!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
!difficulty Easy
!subject Restriction No_Tasks_Unassigned_To_CPU
!summary
Add restriction No_Tasks_Unassigned_To_CPU to provide safe use of Ravenscar.
!problem
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 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.)
!wording
This AI assumes that AI12-0055-1 has been adopted.
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.
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.
!discussion
We add a new restriction:
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.
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
No ASIS impact.
!ACATS test
An ACATS C-Test is needed to verify that the restriction is implemented as specified.
!appendix

****************************************************************


Questions? Ask the ACAA Technical Agent