Next: , Previous: Pragma Priority_Specific_Dispatching, Up: Implementation Defined Pragmas


Pragma Profile (Ravenscar)

Syntax:

     pragma Profile (Ravenscar | Restricted);

This pragma is standard in Ada 2005, but is available in all earlier versions of Ada as an implementation-defined pragma. This is a configuration pragma that establishes the following set of configuration pragmas:

Task_Dispatching_Policy (FIFO_Within_Priorities)
[RM D.2.2] Tasks are dispatched following a preemptive priority-ordered scheduling policy.
Locking_Policy (Ceiling_Locking)
[RM D.3] While tasks and interrupts execute a protected action, they inherit the ceiling priority of the corresponding protected object.
plus the following set of restrictions:
Max_Entry_Queue_Length => 1
No task can be queued on a protected entry.
Max_Protected_Entries => 1
Max_Task_Entries => 0
No rendezvous statements are allowed.
No_Abort_Statements
No_Dynamic_Attachment
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
The Ravenscar profile also includes the following restrictions that specify that there are no semantic dependences on the corresponding predefined packages:
No_Dependence => Ada.Asynchronous_Task_Control
No_Dependence => Ada.Calendar
No_Dependence => Ada.Execution_Time.Group_Budget
No_Dependence => Ada.Execution_Time.Timers
No_Dependence => Ada.Task_Attributes
No_Dependence => System.Multiprocessors.Dispatching_Domains

This set of configuration pragmas and restrictions correspond to the definition of the “Ravenscar Profile” for limited tasking, devised and published by the International Real-Time Ada Workshop, 1997, and whose most recent description is available at http://www-users.cs.york.ac.uk/~burns/ravenscar.ps.

The original definition of the profile was revised at subsequent IRTAW meetings. It has been included in the ISO Guide for the Use of the Ada Programming Language in High Integrity Systems, and has been approved by ISO/IEC/SC22/WG9 for inclusion in the next revision of the standard. The formal definition given by the Ada Rapporteur Group (ARG) can be found in two Ada Issues (AI-249 and AI-305) available at http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ais/ai-00249.txt and http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ais/ai-00305.txt.

The above set is a superset of the restrictions provided by pragma Profile (Restricted), it includes six additional restrictions (Simple_Barriers, No_Select_Statements, No_Calendar, No_Implicit_Heap_Allocations, No_Relative_Delay and No_Task_Termination). This means that pragma Profile (Ravenscar), like the pragma Profile (Restricted), automatically causes the use of a simplified, more efficient version of the tasking run-time system.