Version 1.4 of ais/ai-00205.txt
!standard D.4 (10) 98-10-08 AI95-00205/01
!standard D.4 (11)
!class binding interpretation 98-09-29
!status ARG approved 98-10-08 (6-0-0)
!status work item 98-09-29
!status received 98-09-29
!priority Medium
!difficulty Easy
!subject Priority changes in abortable part
!summary 98-09-29
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 98-10-08
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.
!response 98-09-29
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(11a-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.
!wording 98-09-29
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.
!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