A configuration pragma that establishes the following set of restrictions:
- [RM D.7] There are no abort_statements, and there are
no calls to Task_Identification.Abort_Task.
- There are no select_statements.
- [RM D.7] All (non-environment) tasks depend
directly on the environment task of the partition.
- [RM D.7] There are no allocators for task types
or types containing task subcomponents.
- [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
- [RM D.7] There are no selective_accepts with terminate_alternatives
- There are no semantic dependencies on Ada.Interrupts.
- [RM D.7] No constructs are allowed to cause implicit heap allocation
- There are no allocators for protected types or
types containing protected subcomponents.
- Protected objects and access types that designate
such objects shall be declared only at library level.
- Requeue statements are not allowed.
- There are no semantic dependencies on the package Ada.Calendar.
- There are no delay_relative_statements.
- There are no semantic dependencies on the Ada.Task_Attributes package and
there are no references to the attributes Callable and Terminated [RM 9.9].
- Entry barrier condition expressions shall be boolean
objects which are declared in the protected type
which contains the entry.
Max_Asynchronous_Select_Nesting = 0
- [RM D.7] Specifies the maximum dynamic nesting level of asynchronous_selects.
A value of zero prevents the use of any asynchronous_select.
Max_Task_Entries = 0
- [RM D.7] Specifies the maximum number of entries
per task. The bounds of every entry family
of a task unit shall be static, or shall be
defined by a discriminant of a subtype whose
corresponding bound is static. A value of zero
indicates that no rendezvous are possible. For
the Ravenscar pragma, the value of Max_Task_Entries is always
Max_Protected_Entries = 1
- [RM D.7] Specifies the maximum number of entries per
protected type. The bounds of every entry family of
a protected unit shall be static, or shall be defined
by a discriminant of a subtype whose corresponding
bound is static. For the Ravenscar pragma the value of
Max_Protected_Entries is always 1.
Max_Select_Alternatives = 0
- [RM D.7] Specifies the maximum number of alternatives in a selective_accept.
For the Ravenscar pragma the value is always 0.
- Tasks which terminate are erroneous.
- No task can be queued on a protected entry. Note that this restrictions is
checked at run time. The violation of this restriction generates a
This set of restrictions corresponds 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
The above set is a superset of the restrictions provided by pragma
Restricted_Run_Time, it includes five additional restrictions
No_Task_Termination). This means
Ravenscar, like the pragma
automatically causes the use of a simplified, more efficient version
of the tasking run-time system.