pragma Profile (Ravenscar);
pragma Task_Dispatching_Policy (FIFO_Within_Priorities); -- Scheduler FIFO con preemption basata su priorità
pragma Locking_Policy (Ceiling_Locking); -- Usa il protocollo priority ceiling, per prevenire l'inversione delle priorità
pragma Detect_Blocking; -- Garantisce che un'operazione potenzialmente bloccante sia rilevata e generi un'eccezione
pragma Restrictions (
No_Abort_Statements, -- Proibisce l'uso del costrutto `abort`
No_Dynamic_Attachment, -- Proibisce l'uso del package Ada.Interrupts
No_Dynamic_Priorities, -- Proibisce lettura e scrittura di priorità a runtime (package Ada.Priorities e attributo Priority)
No_Implicit_Heap_Allocations, -- Proibisce l'uso di costrutti che allocano memoria sullo heap implicitamente
No_Local_Protected_Objects, -- Oggetti protetti possono essere dichiarati solo a livello di libreria
No_Local_Timing_Events, -- Oggetti di tipo Ada.Real_Time.Timing_Events possono essere dichiarati solo a livello di libreria
No_Protected_Type_Allocators, -- Proibisce l'uso di allocatori di oggetti di tipo protetto o contenenti membri di tipo protetto
No_Relative_Delay, -- Proibisce l'uso del costrutto `delay` in forma relativa (e.g. `delay X;`)
No_Requeue_Statements, -- Proibisce l'uso del costrutto `requeue`
No_Select_Statements, -- Proibisce l'uso del costrutto `select`
No_Specific_Termination_Handlers, -- Proibisce l'uso di Task_Termination.Set_Specific_Handler e di Task_Termination.Specific_Handler
No_Task_Allocators, -- Proibisce la generazione di allocatori per oggetti di tipo task o che hanno membri di tipo task
No_Task_Hierarchy, -- Tutti i task discendono direttamente dall'environment task
No_Task_Termination, -- Tutti i task devono continuare la propria esecuzione indefinitamente e non possono terminare
Simple_Barriers, -- La guardia dell'`entry` in un oggetto protetto deve essere un valore statico o un membro dell'oggetto
Max_Entry_Queue_Length => 1, -- Non consente di avere contemporaneamente più di una chiamata nella coda di un `entry`
Max_Protected_Entries => 1, -- Un tipo protetto non può avere più di un `entry`
Max_Task_Entries => 0, -- Un task non può avere alcun `entry`
-- Proibisce l'uso dei seguenti package
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);