Version 1.1 of ais/ai-00434.txt

Unformatted version of ais/ai-00434.txt version 1.1
Other versions for file ais/ai-00434.txt

!standard C.3 (23)          05-08-17 AI95-00434/01
!standard C.3 (26)
!standard C.3 (28)
!standard C.3.1 (07)
!standard C.3.1 (11)
!standard C.3.1 (16)
!standard C.3.1 (23)
!standard C.3.2 (22)
!standard C.7.2 (20)
!standard C.7.2 (26)
!standard C.7.2 (30)
!standard C.7.2 (33)
!standard 11.5 (13)
!standard 12.1 (08)
!standard A (03)
!standard A.1 (11)
!standard A.1 (20)
!standard C.2 (01)
!class presentation 05-08-17
!status Amendment 200Y 05-08-17
!comment This AI is not yet approved, but is included in the Amendment.
!status work item 05-08-17
!status received 05-08-17
!priority High
!difficulty Easy
!subject More presentation changes to the Standard
!summary
This AI corrects some minor errors noted in the Standard.
!question
1) In C.3(23), "whose one of its subprograms" makes no sense.
2) In C.3(26), the text says "subclause", but it really is intended to cover the rules of all of C.3, C.3.1, and C.3.2. So it should say "clause". Also, the second comma is extra.
3) In C.3.1(11), "that either" doesn't parse.
4) In C.3.1(7), "library level" should have a hyphen.
5) Metrics should be bullets, but C.3.1(16) isn't one. Also, "worst case" should have a hyphen.
6) In C.3.1(23), "that one of its procedures" doesn't parse.
7) The comma in C.3.2(22) is unecessary and makes the sentence hard to read.
8) There is a comma missing in C.3.2(24).
9) The description of the metrics in C.7.2(20) is somewhat confused.
10) C.7.2(26) should end with a semicolon.
11) C.7.2(33) [a note] has nothing to do with C.7.1; the rule it is talking about is C.7.2(15).
12) 3.2.1(10) says that "universal_integer" is a predefined type, and certainly implies that "universal_float" is as well. Why doesn't A.1(11) and A.1(20) say that?
13) In A(3), "language defined" should have a hyphen.
14) There should be a comma before "or" in 12.1(8).
15) In 11.5(13), "rem" and "mod" should be in boldface.
16) In C.2(1), "implementation's support" is a possessive and weirdly worded.
17) In C.3(28) "a finer-grain control" is odd.
18) In C.7.2(30), "task's attributes" is confusing, does it make "task attributes" or does it mean "attributes of a task"?
!recommendation
(See summary.)
!wording
(See corrigendum.)
!discussion
1) "whose" should be "for which".
2) Yes, all three subcluases are covered, and the wording should be "clause".
3) "that" should be "for which". Also, there should be a comma before "then".
4) "library-level" should have a hyphen when used as an adjective, not as a noun (as in AARM C.3.1(7.a)).
5) Yes, this should be a bullet.
6) Replace "that one of its procedures" with "for which one of its procedures".
7) Remove the comma.
8) Add the comma.
9) "...execute {at}[in] a sufficiently high priority...".
"...the Attribute type shall be a scalar {type} whose size is equal to the size of the predefined [integer size] {type Integer}."
10) Yes, this should end with a semicolon (its not the last bullet).
11) Yes, andsince this note is completely redundant with an explicit rule given in this section, it should be deleted.
12) A.1(11) and A.1(20) should say that those types are predefined.
13) "language-defined" should have a hyphen when used as an adjective.
14) Add the comma.
15) Put them in boldface.
16) Drop "implementation's".
17) Replace "a finer-grain" with "finer-grained".
18) It means "attributes of a task".
!corrigendum 11.5(13)
Replace the paragraph:
@xtern<Division_Check
Check that the second operand is not zero for the operations /, rem and mod.>
by:
@xtern<Division_Check
Check that the second operand is not zero for the operations /, rem and mod.>
!corrigendum 12.1(08)
Replace the paragraph:
A generic_declaration declares a generic unit - a generic package, generic procedure or generic function, as appropriate.
by:
A generic_declaration declares a generic unit - a generic package, generic procedure, or generic function, as appropriate.
!corrigendum A(03)
Replace the paragraph:
The implementation shall ensure that each language defined subprogram is reentrant the sense that concurrent calls on the same subprogram perform as specified, so long as all parameters that could be passed by reference denote nonoverlapping objects.
by:
The implementation shall ensure that each language-defined subprogram is reentrant the sense that concurrent calls on the same subprogram perform as specified, so long as all parameters that could be passed by reference denote nonoverlapping objects.
!corrigendum A.01(11)
Replace the paragraph:
-- The integer type root_integer is predefined. -- The corresponding universal type is universal_integer.
by:
-- The integer type root_integer and the -- corresponding universal type universal_integer are predefined.
!corrigendum A.01(20)
Replace the paragraph:
-- The floating point type root_real is predefined. -- The corresponding universal type is universal_real.
by:
-- The floating point type root_real and the -- corresponding universal type universal_real are predefined.
!corrigendum C.02(01)
Replace the paragraph:
This clause specifies minimal requirements on the implementation's support for representation items and related features.
by:
This clause specifies minimal requirements on the support for representation items and related features.
!corrigendum C.03(23)
Replace the paragraph:
If the underlying system or hardware does not allow interrupts to be blocked, then no blocking is required as part of the execution of subprograms of a protected object whose one of its subprograms is an interrupt handler.
by:
If the underlying system or hardware does not allow interrupts to be blocked, then no blocking is required as part of the execution of subprograms of a protected object for which one of its subprograms is an interrupt handler.
!corrigendum C.03(26)
Replace the paragraph:
Other forms of handlers are allowed to be supported, in which case, the rules of this subclause should be adhered to.
by:
Other forms of handlers are allowed to be supported, in which case the rules of this clause should be adhered to.
!corrigendum C.03(28)
Replace the paragraph:
If the Ceiling_Locking policy is not in effect, the implementation should provide means for the application to specify which interrupts are to be blocked during protected actions, if the underlying system allows for a finer-grain control of interrupt blocking.
by:
If the Ceiling_Locking policy is not in effect, the implementation should provide means for the application to specify which interrupts are to be blocked during protected actions, if the underlying system allows for finer-grained control of interrupt blocking.
!corrigendum C.03.01(7)
Replace the paragraph:
The Attach_Handler pragma is only allowed immediately within the protected_definition where the corresponding subprogram is declared. The corresponding protected_type_declaration or single_protected_declaration shall be a library level declaration.
by:
The Attach_Handler pragma is only allowed immediately within the protected_definition where the corresponding subprogram is declared. The corresponding protected_type_declaration or single_protected_declaration shall be a library-level declaration.
!corrigendum C.03.01(11)
Replace the paragraph:
If the Ceiling_Locking policy (see D.3) is in effect then upon the initialization of a protected object that either an Attach_Handler or Interrupt_Handler pragma applies to one of its procedures, a check is made that the ceiling priority defined in the protected_definition is in the range of System.Interrupt_Priority. If the check fails, Program_Error is raised.
by:
If the Ceiling_Locking policy (see D.3) is in effect, then upon the initialization of a protected object for which either an Attach_Handler or Interrupt_Handler pragma applies to one of its procedures, a check is made that the ceiling priority defined in the protected_definition is in the range of System.Interrupt_Priority. If the check fails, Program_Error is raised.
!corrigendum C.03.01(16)
Replace the paragraph:
1. The worst case overhead for an interrupt handler that is a parameterless protected procedure, in clock cycles. This is the execution time not directly attributable to the handler procedure or the interrupted execution. It is estimated as C - (A+B), where A is how long it takes to complete a given sequence of instructions without any interrupt, B is how long it takes to complete a normal call to a given protected procedure, and C is how long it takes to complete the same sequence of instructions when it is interrupted by one execution of the same procedure called via an interrupt.
by:
!corrigendum C.03.01(23)
Replace the paragraph:
5 The ceiling priority of a protected object that one of its procedures is attached to an interrupt should be at least as high as the highest processor priority at which that interrupt will ever be delivered.
by:
5 The ceiling priority of a protected object for which one of its procedures is attached to an interrupt should be at least as high as the highest processor priority at which that interrupt will ever be delivered.
!corrigendum C.03.02(22)
Replace the paragraph:
The Reference function returns a value of type System.Address that can be used to attach a task entry, via an address clause (see J.7.1) to the interrupt specified by Interrupt. This function raises Program_Error if attaching task entries to interrupts (or to this particular interrupt) is not supported.
by:
The Reference function returns a value of type System.Address that can be used to attach a task entry via an address clause (see J.7.1) to the interrupt specified by Interrupt. This function raises Program_Error if attaching task entries to interrupts (or to this particular interrupt) is not supported.
!corrigendum C.03.02(24)
Replace the paragraph:
If the Ceiling_Locking policy (see D.3) is in effect the implementation shall document the default ceiling priority assigned to a protected object that contains either the Attach_Handler or Interrupt_Handler pragmas, but not the Interrupt_Priority pragma. This default need not be the same for all interrupts.
by:
If the Ceiling_Locking policy (see D.3) is in effect, the implementation shall document the default ceiling priority assigned to a protected object that contains either the Attach_Handler or Interrupt_Handler pragmas, but not the Interrupt_Priority pragma. This default need not be the same for all interrupts.
!corrigendum C.07.02(20)
Replace the paragraph:
The implementation shall document the following metrics: A task calling the following subprograms shall execute in a sufficiently high priority as to not be preempted during the measurement period. This period shall start just before issuing the call and end just after the call completes. If the attributes of task T are accessed by the measurement tests, no other task shall access attributes of that task during the measurement period. For all measurements described here, the Attribute type shall be a scalar whose size is equal to the size of the predefined integer size. For each measurement, two cases shall be documented: one where the accessed attributes are of the calling task (that is, the default value for the T parameter is used), and the other, where T identifies another, non-terminated, task.
by:
The implementation shall document the following metrics: A task calling the following subprograms shall execute at a sufficiently high priority as to not be preempted during the measurement period. This period shall start just before issuing the call and end just after the call completes. If the attributes of task T are accessed by the measurement tests, no other task shall access attributes of that task during the measurement period. For all measurements described here, the Attribute type shall be a scalar type whose size is equal to the size of the predefined type Integer. For each measurement, two cases shall be documented: one where the accessed attributes are of the calling task (that is, the default value for the T parameter is used), and the other, where T identifies another, non-terminated, task.
!corrigendum C.07.02(26)
Replace the paragraph:
by:
!corrigendum C.07.02(30)
Replace the paragraph:
Some implementations are targeted to domains in which memory use at run time must be completely deterministic. For such implementations, it is recommended that the storage for task attributes will be pre-allocated statically and not from the heap. This can be accomplished by either placing restrictions on the number and the size of the task's attributes, or by using the pre-allocated storage for the first N attribute objects, and the heap for the others. In the latter case, N should be documented.
by:
Some implementations are targeted to domains in which memory use at run time must be completely deterministic. For such implementations, it is recommended that the storage for task attributes will be pre-allocated statically and not from the heap. This can be accomplished by either placing restrictions on the number and the size of the attributes of a task, or by using the pre-allocated storage for the first N attribute objects, and the heap for the others. In the latter case, N should be documented.
!corrigendum C.07.02(33)
Delete the paragraph:
14 As specified in C.7.1, if the parameter T (in a call on a subprogram of an instance of this package) identifies a nonexistent task, the execution of the program is erroneous.
!ACATS test
None needed.
!appendix

****************************************************************


Questions? Ask the ACAA Technical Agent