!standard D.4 (10) 99-06-12 AI95-00205/01 !standard D.4 (11) !class binding interpretation 98-09-29 !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 !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. !response 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 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. *************************************************************