Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help


D.5 Dynamic Priorities

(1)
This clause specifies how the base priority of a task can be modified or queried at run time.
Static Semantics
(2)
The following language-defined library package exists:
(3)
       with System;
       with Ada.Task_Identification; -- See C.7.1
       package Ada.Dynamic_Priorities is
(4)
           procedure Set_Priority(Priority : in System.Any_Priority;
                                               T : in Ada.Task_Identification.Task_ID :=
                                               Ada.Task_Identification.Current_Task);
(5)
           function Get_Priority (T : Ada.Task_Identification.Task_ID :=
                                               Ada.Task_Identification.Current_Task)
                                               return System.Any_Priority;
(6)
       end Ada.Dynamic_Priorities;
Dynamic Semantics
(7)
The procedure Set_Priority sets the base priority of the specified task to the specified Priority value. Set_Priority has no effect if the task is terminated.
(8)
The function Get_Priority returns T's current base priority. Tasking_Error is raised if the task is terminated.
(9)
Program_Error is raised by Set_Priority and Get_Priority if T is equal to Null_Task_ID.
(10)
Setting the task's base priority to the new value takes place as soon as is practical but not while the task is performing a protected action. This setting occurs no later then the next abort completion point of the task T (see 9.8).
Bounded (Run-Time) Errors
(11)
If a task is blocked on a protected entry call, and the call is queued, it is a bounded error to raise its base priority above the ceiling priority of the corresponding protected object. When an entry call is cancelled, it is a bounded error if the priority of the calling task is higher than the ceiling priority of the corresponding protected object. In either of these cases, either Program_Error is raised in the task that called the entry, or its priority is temporarily lowered, or both, or neither.
Erroneous Execution
(12)
If any subprogram in this package is called with a parameter T that specifies a task object that no longer exists, the execution of the program is erroneous.
Metrics
(13)
The implementation shall document the following metric:
(14)

(15)
(16)
(17)
(18)
(19)


Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help

Ada WWW Home -- Email comments, additions, corrections, gripes, kudos, etc. to:

Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12