Version 1.1 of 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:
- 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.
!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:
- a call to Set_Value where the Val parameter is not equal to
Initial_Value and the old attribute value is equal to Initial_Value.
by:
- a call to Set_Value where the Val parameter is not equal to
Initial_Value and the old attribute value is equal to Initial_Value;
!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