CVS difference for ais/ai-00327.txt

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

--- ais/ai-00327.txt	2005/05/15 23:43:50	1.15
+++ ais/ai-00327.txt	2005/10/31 05:18:30	1.16
@@ -1,4 +1,8 @@
-!standard D.03 (13)                                    05-05-05  AI95-00327/09
+!standard D.03 (13)                                    05-10-05  AI95-00327/10
+!standard D.03 (06)
+!standard D.03 (08)
+!standard D.03 (09)
+!standard D.03 (10)
 !standard D.05 (00)
 !standard D.05.01 (00)
 !standard D.05.02 (00)
@@ -59,6 +63,53 @@
 
 !wording
 
+Replace D.3(6-11) by:
+
+A locking policy specifies the details of protected object locking. While
+all protected objects have a priority, these rules
+specify the meaning of the priority of a protected object, and the
+relationships between these priorities and task priorities. In addition, the
+policy specifies the state of a task when it executes a protected action, and
+how its active priority is affected by the locking. The *locking policy* is
+specified by a Locking_Policy pragma. For implementation-defined locking
+policies, the meaning of the priority of a protected object is implementation
+defined. If no Locking_Policy pragma applies to appears in any of the program
+units comprising a partition, the locking policy for that partition, as well as
+the meaning of the priority of a protected object, are implementation
+defined.
+
+The expression of a Priority or Interrupt_Priority pragma (see D.1) is
+evaluated as part of the creation of the corresponding protected object and
+converted to the subtype System.Any_Priority or System.Interrupt_Priority,
+respectively. The value of the expression is the initial priority of the
+corresponding protected object. If no Priority or Interrupt_Priority pragma
+applies to a protected object, the initial priority is specified by the locking
+policy.
+
+There is one predefined locking policy, Ceiling_Locking; this policy is defined
+as follows:
+
+* Every protected object has a ceiling priority, which is determined by either
+  a Priority or Interrupt_Priority pragma as defined in D.1, or by assignment
+  to the Priority attribute as described in D.5.2. The ceiling priority of a
+  protected object (or ceiling, for short) is an upper bound on the active
+  priority a task can have when it calls protected operations of that protected
+  object.
+
+* The initial ceiling priority of a protected object is equal to the initial
+  priority for that object.
+
+* If an Interrupt_Handler or Attach_Handler pragma (see C.3.1) appears in a
+  protected_definition without an Interrupt_Priority pragma, the initial
+  priority of protected objects of that type is implementation
+  defined, but in the range of the subtype System.Interrupt_Priority.
+
+* If no pragma Priority, Interrupt_Priority, Interrupt_Handler, or
+  Attach_Handler is specified in the protected_definition, then the
+  initial priority of the corresponding protected object is
+  System.Priority'Last.
+
+
 Add a new paragraph after D.3(13)
 
 Bounded (Run-Time) Errors
@@ -113,8 +164,8 @@
   priority of P. A reference to this attribute shall appear only within
   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.
+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
 
@@ -126,7 +177,7 @@
 
 The implementation shall document the following metric:
   The difference in execution time of calls to the following procedures
-  in protected object P,
+  in protected object P:
 
   protected P is
     procedure Do_Not_Set_Ceiling (Pr : System.Any_Priority);
@@ -385,6 +436,96 @@
 Real-Time Ada Workshop. To appear in Ada Letters, December 2003.
 
 
+!corrigendum D.3(6)
+
+@drepl
+A locking policy specifies the details of protected object locking. These
+rules specify whether or not protected objects have priorities, and the
+relationships between these priorities and task priorities. In addition, the
+policy specifies the state of a task when it executes a protected action, and
+how its active priority is affected by the locking. The @i<locking policy> is
+specified by a Locking_Policy pragma. For implementation-defined locking
+policies, the effect of a Priority or Interrupt_Priority pragma on a protected
+object is implementation defined.
+If no Locking_Policy pragma applies to any of the program units comprising
+a partition, the locking policy for that partition, as well as the effect
+of specifying either a Priority or Interrupt_Priority pragma for a protected
+object, are implementation defined.
+@dby
+A locking policy specifies the details of protected object locking. While
+all protected objects have a priority, these rules
+specify the meaning of the priority of a protected object, and the
+relationships between these priorities and task priorities. In addition, the
+policy specifies the state of a task when it executes a protected action, and
+how its active priority is affected by the locking. The @i<locking policy> is
+specified by a Locking_Policy pragma. For implementation-defined locking
+policies, the meaning of the priority of a protected object is implementation
+defined. If no Locking_Policy pragma applies to any of the program
+units comprising a partition, the locking policy for that partition, as well as
+the meaning of the priority of a protected object, are implementation
+defined.
+
+The @fa<expression> of a Priority or Interrupt_Priority pragma (see D.1) is
+evaluated as part of the creation of the corresponding protected object and
+converted to the subtype System.Any_Priority or System.Interrupt_Priority,
+respectively. The value of the expression is the initial priority of the
+corresponding protected object. If no Priority or Interrupt_Priority pragma
+applies to a protected object, the initial priority is specified by the locking
+policy.
+
+
+!corrigendum D.3(8)
+
+@drepl
+@xbullet<Every protected object has a @i<ceiling priority>, which is determined
+by either a Priority or Interrupt_Priority pragma as defined in D.1. The
+ceiling priority of a protected object (or ceiling, for short) is an upper
+bound on the active priority a task can have when it calls protected operations
+of that protected object.>
+@dby
+@xbullet<Every protected object has a @i<ceiling priority>, which is determined
+by either a Priority or Interrupt_Priority pragma as defined in D.1, or by
+assignment to the Priority attribute as described in D.5.2. The ceiling
+priority of a protected object (or ceiling, for short) is an upper bound on the
+active priority a task can have when it calls protected operations of that
+protected object.>
+
+!corrigendum D.3(9)
+
+@drepl
+@xbullet<The @fa<expression> of a Priority or Interrupt_Priority pragma is
+evaluated as part of the creation of the corresponding protected object and
+converted to the subtype System.Any_Priority or System.Interrupt_Priority,
+respectively. The value of the expression is the ceiling priority of the
+corresponding protected object.>
+@dby
+@xbullet<The initial ceiling priority of a protected object is equal to the
+initial priority for that object.>
+
+!corrigendum D.3(10)
+
+@drepl
+@xbullet<If an Interrupt_Handler or Attach_Handler pragma (see C.3.1) appears
+in a @fa<protected_definition> without an Interrupt_Priority pragma, the ceiling
+priority of protected objects of that type is implementation defined, but in
+the range of the subtype System.Interrupt_Priority.>
+@dby
+@xbullet<If an Interrupt_Handler or Attach_Handler pragma (see C.3.1) appears
+in a @fa<protected_definition> without an Interrupt_Priority pragma, the initial
+priority of protected objects of that type is implementation defined, but in
+the range of the subtype System.Interrupt_Priority.>
+
+!corrigendum D.3(11)
+
+@drepl
+@xbullet<If no @fa<pragma> Priority, Interrupt_Priority, Interrupt_Handler, or
+Attach_Handler is specified in the @fa<protected_definition>, then the ceiling
+priority of the corresponding protected object is System.Priority'Last.>
+@dby
+@xbullet<If no @fa<pragma> Priority, Interrupt_Priority, Interrupt_Handler, or
+Attach_Handler is specified in the @fa<protected_definition>, then the initial
+priority of the corresponding protected object is System.Priority'Last.>
+
 !corrigendum D.3(13)
 
 @dinsa
@@ -442,7 +583,7 @@
 
 @i<@s8<Static Semantics>>
 
-The following attribute is defined for a prefix P that denotes a
+The following attribute is defined for a @fa<prefix> P that denotes a
 protected object:
 
 @xhang<@xterm<P'Priority>
@@ -451,8 +592,8 @@
 priority of P. A reference to this attribute shall appear only within
 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.
+The initial value of this attribute is the initial value of the priority of the
+protected object, and can be changed by an assignment.
 
 @i<@s8<Dynamic Semantics>>
 
@@ -465,7 +606,7 @@
 The implementation shall document the following metric:
 
 @xbullet<The difference in execution time of calls to the following procedures
-in protected object P,>
+in protected object P:>
 
 @xcode<   @b<protected> P @b<is>
       @b<procedure> Do_Not_Set_Ceiling (Pr : System.Any_Priority);

Questions? Ask the ACAA Technical Agent