CVS difference for ais/ai-00327.txt

Differences between 1.9 and version 1.10
Log of other versions for file ais/ai-00327.txt

--- ais/ai-00327.txt	2004/02/21 03:06:13	1.9
+++ ais/ai-00327.txt	2004/07/27 23:00:59	1.10
@@ -1,5 +1,11 @@
-!standard D.03 (00)                                    04-02-19  AI95-00327/05
+!standard D.03 (13)                                    04-06-24  AI95-00327/06
+!standard D.05 (00)
+!standard D.05.01 (00)
+!standard D.05.02 (00)
+!standard D.07 (09)
 !class amendment 03-06-05
+!status Amendment 200Y 04-06-24
+!status ARG Approved 8-0-0  04-06-13
 !status work item 03-06-05
 !status received 03-06-05
 !priority Medium
@@ -72,12 +78,21 @@
     entry call was queued.
 
 
-Delete paragraph D.5(11).
+Insert after the title of D.5:
 
+This clause describes how the priority of an entity can be queried or modified
+at run time.
 
+D.5.1 Dynamic Priorities for Tasks
+
+[This changes the section number of all of the existing text.]
+
+Delete paragraph D.5(11) (now D.5.1(11)).
+
+
 Add a new section:
 
-D.5.1 Dynamic Priorities for Protected Objects
+D.5.2 Dynamic Priorities for Protected Objects
 
 This clause specifies how the priority of a protected object can be
 modified or queried at run time.
@@ -86,8 +101,8 @@
 
 The following attribute of a protected object is defined:
 
-P'Priority:
-Denotes a component of the enclosing protected object P.
+P'Priority
+Denotes a non-aliased component of the enclosing protected object P.
 This component is of type System.Any_Priority and its value is the
 priority of P. Reference to this attribute shall appear only inside
 the body of P.
@@ -121,7 +136,7 @@
     end;
     procedure Set_Ceiling (Pr : System.Any_Priority) is
     begin
-      P'Priority :=Pr;
+      P'Priority := Pr;
     end;
   end P;
 
@@ -360,8 +375,123 @@
 Real-Time Ada Workshop. To appear in Ada Letters, December 2003.
 
 
+!corrigendum D.3(13)
+
+@dinsa
+@xbullet<When a task calls a protected operation, a check is made that its
+active priority is not higher than the ceiling of the corresponding protected
+object; Program_Error is raised if this check fails.>
+@dinss
+@i<@s8<Bounded (Run-Time) Errors>>
+
+Following any change of priority, it is a bounded error for the active
+priority of any task with a call queued on an entry of a protected
+object to be higher than the ceiling priority of the protected object.
+In this case one of the following applies:
+
+@xbullet<at any time prior to executing the entry body Program_Error is raised
+in the calling task;>
+@xbullet<when the entry is open the entry body is executed at the ceiling
+priority of the protected object;>
+@xbullet<when the entry is open the entry body is executed at the ceiling
+priority of the protected object and then Program_Error is raised in
+the calling task; or>
+@xbullet<when the entry is open the entry body is executed at the ceiling
+priority of the protected object that was in effect when the
+entry call was queued.>
+
+!corrigendum D.5(1)
+
+@dinsb
+This clause specifies how the base priority of a task can be modified or
+queried at run time.
+@dinss
+This clause describes how the priority of an entity can be queried or modified
+at run time.
+
+@fa<@s10<@b<D.5.1 Dynamic Priorities for Tasks>>>
+
+[This changes the subclause of all of the existing text.]
+
+!corrigendum D.5(11)
+
+@ddel
+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.
+
+!corrigendum D.5.2(01)
+
+@dinsc
+This clause specifies how the priority of a protected object can be
+modified or queried at run time.
+
+@i<@s8<Static Semantics>>
+
+The following attribute of a protected object is defined:
+
+@xhang<@xterm<P'Priority>>
+Denotes a non-aliased component of the enclosing protected object P.
+This component is of type System.Any_Priority and its value is the
+priority of P. Reference to this attribute shall appear only inside
+the body of P.>
+
+The initial value of this attribute is set by pragmas Priority or
+Interrupt_Priority, and can be changed by an assignment.
+
+@i<@s8<Dynamic Semantics>>
+
+If the Locking_Policy Ceiling_Locking 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.
+
+@i<@s8<Metrics>>
+
+The implementation shall document the following metric:
+
+@xbullet<The difference in execution time of calls to the following procedures
+in protected object P,>
+
+@xcode<   @b<protected> P @b<is>
+      @b<procedure> Do_Not_Set_Ceiling (Pr : System.Any_Priority);
+      @b<procedure> Set_Ceiling (Pr : System.Any_Priority);
+   @b<private>
+      @b<null>;
+   @b<end> P;
+
+   @b<protected body> P @b<is>
+      @b<procedure> Do_Not_Set_Ceiling (Pr : System.Any_Priority) @b<is>
+      @b<begin>
+         @b<null>;
+      @b<end>;
+      @b<procedure> Set_Ceiling (Pr : System.Any_Priority) @b<is>
+      @b<begin>
+         P'Priority := Pr;
+      @b<end>;
+   @b<end> P;>
+
+@xindent<@s9<NOTES@hr
+38 The value of P'Priority 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.>>
+
+!corrigendum D.7(9)
+
+@drepl
+@xhang<@xterm<No_Dynamic_Priorities>
+There are no semantic dependences on the package Dynamic_Priorities.>
+@dby
+@xhang<@xterm<No_Dynamic_Priorities>
+There are no semantic dependences on the package Dynamic_Priorities, and
+no occurrences of attribute 'Priority.>
+
 !ACATS test
 
+Create ACATS test(s) for this feature.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent