Ravenscar profile: Difference between revisions

From HandWiki
(linkage)
 
(update)
 
Line 1: Line 1:
{{Short description|Feature of the Ada programming language}}
The '''Ravenscar profile''' is a subset of the [[Ada (programming language)|Ada]] tasking features designed for safety-critical hard [[Real-time computing|real-time computing]]. It was defined by a separate technical report in Ada 95; it is now part of the Ada 2012 Standard. It has been named after the English village of Ravenscar, the location of the 8th International Real-Time Ada Workshop (IRTAW 8).
The '''Ravenscar profile''' is a subset of the [[Ada (programming language)|Ada]] tasking features designed for safety-critical hard [[Real-time computing|real-time computing]]. It was defined by a separate technical report in Ada 95; it is now part of the Ada 2012 Standard. It has been named after the English village of Ravenscar, the location of the 8th International Real-Time Ada Workshop (IRTAW 8).
== Restrictions of the profile==
== Restrictions of the profile==


A Ravenscar Ada application uses the following [[Directive (programming)|compiler directive]]:
A Ravenscar Ada application uses the following [[Directive (programming)|compiler directive]]:
<source lang="ada">
<syntaxhighlight lang="ada">
pragma Profile (Ravenscar);
pragma Profile (Ravenscar);
</source>
</syntaxhighlight>
This is the same as writing the following set of configuration pragmas:
This is the same as writing the following set of configuration pragmas:
<source lang="ada">
<syntaxhighlight lang="ada">
pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Locking_Policy (Ceiling_Locking);
pragma Locking_Policy (Ceiling_Locking);
Line 36: Line 38:
                 No_Dependence => Ada.Execution_Time.Timers,
                 No_Dependence => Ada.Execution_Time.Timers,
                 No_Dependence => Ada.Task_Attributes);
                 No_Dependence => Ada.Task_Attributes);
</source>
</syntaxhighlight>


== See also ==
== See also ==
Line 42: Line 44:
* [[High integrity software]]
* [[High integrity software]]
* [[SPARK (programming language)]]
* [[SPARK (programming language)]]
* From "Ada Reference Manual (Ada 202x Draft 19"): ([http://www.ada-auth.org/standards/2xrm/html/RM-D-13.html D.13 The Ravenscar and Jorvik Profiles])
* From "Ada Reference Manual (Ada 2022"): ([http://www.ada-auth.org/standards/22rm/html/rm-d-13.html D.13 The Ravenscar and Jorvik Profiles])


== References ==
== References ==
Line 82: Line 84:
[[Category:Ada (programming language)]]
[[Category:Ada (programming language)]]
[[Category:Ada programming language family]]
[[Category:Ada programming language family]]
<!-- Hidden categories below -->






{{Sourceattribution|Ravenscar profile}}
{{Sourceattribution|Ravenscar profile}}

Latest revision as of 02:45, 25 July 2025

Short description: Feature of the Ada programming language

The Ravenscar profile is a subset of the Ada tasking features designed for safety-critical hard real-time computing. It was defined by a separate technical report in Ada 95; it is now part of the Ada 2012 Standard. It has been named after the English village of Ravenscar, the location of the 8th International Real-Time Ada Workshop (IRTAW 8).

Restrictions of the profile

A Ravenscar Ada application uses the following compiler directive:

pragma Profile (Ravenscar);

This is the same as writing the following set of configuration pragmas:

pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Locking_Policy (Ceiling_Locking);
pragma Detect_Blocking;
pragma Restrictions (
                 No_Abort_Statements,
                 No_Calendar,
                 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,
                 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_Budget,
                 No_Dependence => Ada.Execution_Time.Timers,
                 No_Dependence => Ada.Task_Attributes);

See also

References

External links