Version 1.9 of ais/ai-00205.txt

Unformatted version of ais/ai-00205.txt version 1.9
Other versions for file ais/ai-00205.txt

!standard D.4 (10)          99-08-31 AI95-00205/02
!standard D.4 (11)
!class binding interpretation 98-09-29
!status Corrigendum 2000 99-07-27
!status WG9 approved 99-06-12
!status ARG approved 98-10-08 (6-0-0)
!status work item 98-09-29
!status received 98-09-29
!priority Medium
!difficulty Easy
!qualifier Error
!subject Priority changes in abortable part
!summary
For the priority queuing policy, if the base priority is changed in an abortable part while a triggering entry call is queued, the priority of the entry call is not affected. (That is, the rule of D.4(10) applies.)
!question
If Set_Priority is called in the abortable part, is the priority of the triggering entry call updated? (No.) D.4(10) does not apply (because the base priority of the task is set), so it appears that the update must occur (because either D.4(10) or D.4(11) must apply). But there is a validation test which requires otherwise.
!recommendation
(See summary.)
!wording
D.4(10) should be changed to read:
After a call is first queued, changes to the active priority of a task do not affect the priority of the call, unless the base priority of the task is set while the task is blocked on an entry call.
!discussion
The language designers did not want D.4(11) to apply in this case. This is supported by the use of the phrase "if the task is blocked on an entry call" in D.4(11) -- the task making a triggering entry call is not blocked. It is further supported by the lengthy discussion in the AARM on this very topic (AARM D.4(11.a-11.f)).
However, the language designers failed to note that the wording of D.4(10) prevents it from applying in this case as well. The intent was that D.4(10) would apply to all entry calls unless D.4(11) applied.
!corrigendum D.04(10)
Replace the paragraph:
by:
!ACATS test
Test CXD4004 prompted this AI, and contains the case in question.
!appendix

!section D.4(10)
!section D.4(11)
!subject Priority changes in abortable part
!reference AARM-D.4
!from Randy Brukardt 98-09-29
!discussion

FRN980922 concerned ACVC test CXD4004, which uses priority queuing.
The test queues some tasks of various priorities; one of them starts
an ATC whose abortable part changes the base priority of the task. The
test then checks that the order of the queued tasks is not changed by
the change of base priority.

The problem is that neither D.4(10) nor D.4(11) applies as they are
written. So what happens?

This generated plenty of discussion on the FRT list. The AARM discussion
of the subject proved decisive - D.4(10) applies.

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

From: 	Ted Baker[SMTP:baker@dad.cs.fsu.edu]
Sent: 	Wednesday, September 30, 1998 1:23 PM
Subject: 	Re: New AI: AI-00205

Randy,

| For the priority queuing policy, if the base priority is changed in an
| abortable part while a triggering entry call is queued, the priority of
| the entry call is not affected. (That is, the rule of D.4(10) applies.)

You probably want to reword this slightly, since inside an abortable
part a task may make perform some other operation that is blocking,
like a normal entry call.  The key issue here is that the trigger of
the select-then-abort does not count as blocking.

--Ted

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

From: 	Robert Dewar[SMTP:dewar@GNAT.COM]
Sent: 	Wednesday, September 30, 1998 5:12 PM
Subject: 	Re: New AI: AI-00205

In my view this is a confirmation, but it is certainly fine.

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


Questions? Ask the ACAA Technical Agent