Appendix A. Restrictions and Profiles

This Appendix defines how the Ada 95 restrictions accessible through the predefined pragma Restrictions are supported. Unsafe features such as run-time dispatching and heap management are not supported in the run-time system, so all the restrictions that are relevant for these features are set to True by default.

Table A-1 gives the default set of restrictions. These correspond to the Ravenscar profile, and support a limited form of tasking with protected types and interrupts.

The Restricted profile supports a similar set of restrictions by with tasking and protected types totally prohibited.

Table A-1. Default Restrictions

Restriction Ada 95 Reference Manual Section Default Value
Immediate_Reclamation RM H.4(10) True
No_Abort_Statements RM D.7(5), H.4(2) True
No_Access_Subprograms RM H.4(17) False
No_Allocators RM H.4(7) True
No_Asynchronous_Control RM D.7(10) True
No_Delay RM H.4(21) False
No_Dispatch RM H.4(19) True
No_Dynamic_Priorities RM D.7(9) True
No_Exceptions RM H.4(12) False
No_Exception_Handlers XGC RM H.4(12) True
No_Fixed_Point RM H.4(15) False
No_Floating_Point RM H.4(14) False
No_Implementation_Attributes ERC32 Ada specific False
No_Implementation_Pragmas ERC32 Ada specific False
No_IO RM H.4(20) True
No_Implicit_Heap_Allocations RM D.7(8), H.4(2) True
No_Local_Allocators RM H.4(8) True
No_Nested_Finalization RM D.7(4) True
No_Protected_Types RM H.4(5) False
No_Recursion RM H.4(22) True
No_Reentrancy RM H.4(23) False
No_Task_Allocators RM D.7(7) True
No_Task_Hierarchy RM D.7(3), H.4(2) True
No_Terminate_Alternatives RM D.7(6) True
No_Unchecked_Access RM H.4(18) True
No_Unchecked_Conversion RM H.4(16) False
No_Unchecked_Deallocation RM H.4(9) True
Simple_Barrier_Variables Ravenscar specific True
No_Calendar Ravenscar specific True
No_Relative_Delay Ravenscar specific True
No_Protected_Type_Allocators Ravenscar specific True
No_Local_Protected_Objects Ravenscar specific True
No_Requeue Ravenscar specific True
No_Select_Statements Ravenscar specific True
No_Task_Attributes Ravenscar specific True
No_Task_Termination Ravenscar specific True

Table A-2 gives the restrictions concerning numerical limits.

Table A-2. Default Restrictions

Restriction Ada 95 Reference Manual Section Default Value
Max_Asynchronous_Select_Nesting RM D.7(18), H.4(2) 0
Max_Protected_Entries RM D.7(14) 1
Max_Select_Alternatives RM D.7(12) 0
Max_Storage_At_Blocking RM D.7(17) 0
Max_Task_Entries RM D.7(13), H.4(2) 0
Max_Tasks RM D.7(19), H.4(2) Undefined
Max_Entry_Queue_Depth Ravenscar specific 1

Violation of the restriction Max_Entry_Queue_Depth is detected at run time and raises the predefined exception Program_Error.