Next: , Previous: D.5.1, Up: D.5


D.5.2 Dynamic Priorities for Protected Objects

1/2
{00327AI95−00327−01} This clause specifies how the priority of a protected object can be modified or queried at run time.

Static Semantics

2/2
{00327AI95−00327−01} The following attribute is defined for a prefix P that denotes a protected object:

3/2
P'Priority

{00327AI95−00327−01} Denotes a non−aliased component of the protected object P. This component is of type System.Any_Priority and its value is the priority of P. P'Priority denotes a variable if and only if P denotes a variable. A reference to this attribute shall appear only within the body of P.

4/2
{00327AI95−00327−01} The initial value of this attribute is the initial value of the priority of the protected object[, and can be changed by an assignment].

Dynamic Semantics

5/2
{00327AI95−00327−01} If the locking policy Ceiling_Locking (see D.3) is in effect then the ceiling priority of a protected object P is set to the value of P'Priority at the end of each protected action of P.

6/2
{00445AI95−00445−01} If the locking policy Ceiling_Locking is in effect, then for a protected object P with either an Attach_Handler or Interrupt_Handler pragma applying to one of its procedures, a check is made that the value to be assigned to P'Priority is in the range System.Interrupt_Priority. If the check fails, Program_Error is raised.{Program_Error (raised by failure of run−time check)}

Metrics

7/2
{00327AI95−00327−01} The implementation shall document the following metric:

8/2

9/2

     protected is
        procedure Do_Not_Set_Ceiling (Pr System.Any_Priority);
        procedure Set_Ceiling (Pr System.Any_Priority);
     end P;

10/2

     protected body is
        procedure Do_Not_Set_Ceiling (Pr System.Any_Priority) is
        begin
           null;
        end;
        procedure Set_Ceiling (Pr System.Any_Priority) is
        begin
           P'Priority := Pr;
        end;
     end P;

10.a/2

Documentation Requirement: The metrics for setting the priority of a protected object.

     NOTES

11/2

31  {00327AI95−00327−01} Since P'Priority is a normal variable, the value following an assignment to the attribute immediately reflects the new value even though its impact on the ceiling priority of P is postponed until completion of the protected action in which it is executed.
Extensions to Ada 95

11.a/2

{00327AI95−00327−01} {00445AI95−00445−01} {extensions to Ada 95} The ability to dynamically change and query the priority of a protected object is new.