D.13 The Ravenscar Profile
This subclause defines the Ravenscar profile.
Legality Rules
Static Semantics
The usage profile Ravenscar
is equivalent to the following set of pragmas:
pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Locking_Policy (Ceiling_Locking);
pragma Detect_Blocking;
pragma Restrictions (
No_Abort_Statements,
No_Dynamic_Attachment,
No_Dynamic_CPU_Assignment,
No_Dynamic_Priorities,
No_Implicit_Heap_Allocations,
No_Local_Protected_Objects,
No_Local_Timing_Events,
No_Protected_Type_Allocators,
No_Relative_Delay,
No_Requeue_Statements,
No_Select_Statements,
No_Specific_Termination_Handlers,
No_Task_Allocators,
No_Task_Hierarchy,
No_Task_Termination,
Simple_Barriers,
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.Synchronous_Barriers,
No_Dependence => Ada.Task_Attributes,
No_Dependence => System.Multiprocessors.Dispatching_Domains);
Paragraph 7 was deleted.
Implementation Requirements
This paragraph was
deleted.
Implementation Advice
On a multiprocessor system, an implementation should
support a fully partitioned approach. Each processor should have separate
and disjoint ready queues.
42 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.
43 When the Ravenscar profile is in effect
(via the effect of the No_Dynamic_CPU_Assignment restriction), all of
the tasks in the partition will execute on a single CPU unless the programmer
explicitly uses aspect CPU to specify the CPU assignments for tasks.
The use of multiple CPUs requires care, as many guarantees of single
CPU scheduling no longer apply.
44 It is not recommended to specify the
CPU of a task to be Not_A_Specific_CPU when the Ravenscar profile is
in effect. How a partition executes strongly depends on the assignment
of tasks to CPUs.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe