D.13 The Ravenscar ProfileRun-time Profiles
[This clause defines
the Ravenscar profile. specifies
a mechanism for defining run-time profiles. ]
The usage profile
Ravenscar is equivalent to the following set of pragmas: A
profile is equivalent to the set of configuration pragmas that is defined
for each run-time profile.
pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Locking_Policy (Ceiling_Locking);
pragma Restrictions (
Max_Entry_Queue_Length => 1,
Max_Protected_Entries => 1,
Max_Task_Entries => 0,
No_Dependence => Ada.Asynchronous_Task_Control,
No_Dependence => Ada.Calendar,
No_Dependence => Ada.Execution_Time.Group_Budgets,
No_Dependence => Ada.Execution_Time.Timers,
No_Dependence => Ada.Task_Attributes,
No_Dependence => System.Multiprocessors.Dispatching_Domains);
Ravenscar profile is named for the location of the meeting that defined
its initial version. The name is now in widespread use, so we stick with
existing practice, rather than using a more descriptive name.
A task shall only be on the ready queues of one
processor, and the processor to which a task belongs shall be defined
statically. Whenever a task running on a processor reaches a task dispatching
point, it goes back to the ready queues of the same processor. A task
with a CPU value of Not_A_Specific_CPU will execute on an implementation
defined processor. [A task without a CPU aspect will activate and execute
on the same processor as its activating task.]
Proof: The processor
of a task without a aspect CPU is defined in D.16.
The processor on which a task with a
CPU value of a Not_A_Specific_CPU will execute when the Ravenscar profile
is in effect.
On a multiprocessor system, an implementation should
support a fully partitioned approach. Each processor should have separate
and disjoint ready queues.
On a multiprocessor system, each processor
should have a separate and disjoint ready queue.
The effect of the Max_Entry_Queue_Length =>
1 restriction applies only to protected entry queues due to the accompanying
restriction of Max_Task_Entries => 0.
Extensions to Ada 95
Wording Changes from Ada 2005
How Ravenscar behaves on a multiprocessor system
is now defined.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe