CVS difference for ais/ai-00265.txt
--- ais/ai-00265.txt 2003/01/16 01:36:46 1.4
+++ ais/ai-00265.txt 2003/02/19 00:31:10 1.5
@@ -1,4 +1,4 @@
-!standard D.2.2 (5) 03-01-06 AI95-00265/04
+!standard D.2.2 (5) 03-02-08 AI95-00265/05
!standard D.7 (00)
!class amendment 01-05-10
!status work item 01-05-10
@@ -54,8 +54,8 @@
The form of a pragma Partition_Elaboration_Policy is as follows:
pragma Partition_Elaboration_Policy ( <Policy_Identifier> );
-The Policy_Identifier shall be either Sequential or Concurrent;
-Concurrent is the default.
+The Policy_Identifier shall be either Sequential, Concurrent or an
+implementation-defined identifier; Concurrent is the default.
If the Sequential policy is specified for a
@@ -73,61 +73,36 @@
handlers is deferred. The deferred task activation and handler attachment
occurs after the elaboration of all library_items prior to calling the main
subprogram. At this point the Environment task is suspended until all deferred
-task activation and handler attachment is complete. Task activation does not
-inherit the priority of the Environment task.
+task activation and handler attachment is complete.
-If the Policy_Identifier is Sequential and the Environment task, in
-its elaboration of library_items, executes a potentially-blocking
-operation other than a delay statement, task creation or a call on
-a protected entry with a open barrier then it becomes terminated,
-thereby completing execution of the active partition. If any deferred
-task activation fails then Tasking_Error is raised in the
-Environment task. The Environment task and all tasks whose
-activations fail are terminated.
+If any deferred task activation fails then Tasking_Error is raised
+in the Environment task. The Environment task and all tasks whose
+activations fail are terminated. If a number of dynamic interrupt
+handler attachments for the same interrupt are defered then the
+handler most recently deferred is attached.
If the Policy_Identifier is Concurrent the execution of
the declarative part of the Environment task is as defined in 10.2.
-If any deferred task activation fails, it is recommended that the active
-partition be immediately terminated to mitigate the hazard posed by continuing
-execution with a subset of the tasks being active.
+If the Policy_Identifier is Sequential and the Environment task
+becomes permanently blocked then the partition is deadlocked
+and it is recommended that the active partition be immediately
-If the Environment task becomes permanently blocked it should become
-terminated. However an implemention is allowed not to detect this state
-if it causes distributed overhead in the run-time.
+If the Policy_Identifier is Sequential and any task activation
+fails then an implementation may immediately terminate the active
+partition to mitigate the hazard posed by continuing to execute
+with a subset of the tasks being active.
-a) The Restriction No_Task_Hierarchy is needed to prevent deadlock.
-b) If the Environment task does a number of dynamic attachments
-of interrupt handlers during its elaboration they will all be
-deferred. It is perhaps not clear which should be the actual one
-attached once attachment occurs. One solution would be to ban
-c) At the last ARG meeting the view was taken that the AI should say what the
-Environment task should not do (ie how it can get blocked). However this
-list is quite long:
-- a select_statement (conditional entry call, or an ATC)
-- an entry_call_statement
-- an abort_statement
-- a call on a protected subprogram that performs an external call on a
-protected subprogram (or an external requeue) with the same target
-object as that of the outer protected subprogram
-- a call on a language-defined subprogram that is potentially blocking
-- a call on a subprogram whose body contains one of the above excluded
-Hence have retained the original structure which list the acceptable
-blocking operations - but have included calling a protected entry which
-has a True barrier.
+The Restriction No_Task_Hierarchy is needed to prevent deadlock.
Questions? Ask the ACAA Technical Agent