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