CVS difference for ais/ai-00249.txt

Differences between 1.6 and version 1.7
Log of other versions for file ais/ai-00249.txt

--- ais/ai-00249.txt	2002/07/23 01:05:24	1.6
+++ ais/ai-00249.txt	2002/10/01 03:08:53	1.7
@@ -1,4 +1,4 @@
-!standard D.2.2 (5)                                02-07-17  AI95-00249/05
+!standard D.2.2 (5)                                02-09-02  AI95-00249/06
 !standard D.7 (00)
 !class amendment 00-12-04
 !status work item 00-12-04
@@ -37,54 +37,67 @@
 
 !wording
 
-Static Semantics
-    pragma Profile (profile_identifier [profile_argument_definition]);
+Add new section D.13
 
+D.13 Pragma Profile and the Ravenscar Profile
+
+Syntax
+The form of a pragma Profile is as follows:
+pragma Profile (profile_identifier [profile_argument_definition]);
+
+Legality Rules
 The profile_identifier shall be either Ravenscar or an implementation-defined
 identifier.  For profile_identifier Ravenscar, there shall be no
 profile_argument_definition.  For other profile_identifiers, the
-semantics of the profile_argument_definition are implementation-defined
+semantics of the profile_argument_definition are implementation-defined.
 
+Post-Compilation Rules
 Pragma Profile is a configuration pragma.  It is equivalent to the set of
 pragmas that are defined below.  There may be more than one pragma Profile
 for a partition.
 
 Dynamic Semantics
-
 When profile_identifier Ravenscar is in effect, the following
 dynamic semantics apply:
-
-* The Task_Dispatching_Policy for the active partition shall be
-  FIFO_Within_Priorities.
-
-* The Locking_Policy for the active partition shall be Ceiling_Locking.
 
-* Pragma Detect_Blocking applies to the partition.
+Task_Dispatching_Policy
+The Task_Dispatching_Policy for the active partition shall be
+FIFO_Within_Priorities.
+
+Locking_Policy
+The Locking_Policy for the active partition shall be Ceiling_Locking.
+
+Restrictions Pragma
+The following pragma Restrictions identifiers defined in D.7 and H.4 apply to
+the mode of operation defined by the Ravenscar Profile:
 
-* The following pragma Restrictions identifiers apply to
-  the alternative mode of operation defined by the Ravenscar Profile:
-
-	Max_Entry_Queue_Length => 1
 	Max_Task_Entries => 0
 	Max_Protected_Entries => 1
 	No_Abort_Statements
 	No_Asynchronous_Control
-	No_Calendar
-	No_Dynamic_Attachment
 	No_Dynamic_Priorities
 	No_Implicit_Heap_Allocations
+	No_Task_Allocators
+	No_Task_Hierarchy
+	No_Calendar
+	No_Dynamic_Attachment
 	No_Local_Protected_Objects
 	No_Protected_Type_Allocators
 	No_Relative_Delay
 	No_Requeue_Statements
 	No_Select_Statements
-	No_Task_Allocators
 	No_Task_Attributes_Package
-	No_Task_Hierarchy
 	Simple_Barriers
+	No_Task_Termination
+	Max_Entry_Queue_Length => 1
+
+In addition the following pragma defined in H.5 applies to
+the mode of operation defined by the Ravenscar Profile:
 
+	pragma Detect_Blocking;
+
 NOTES
-(1) The effect of the Max_Entry_Queue_Length => 1 restriction applies
+The effect of the Max_Entry_Queue_Length => 1 restriction applies
 only to protected entry queues due to the accompanying restriction of
 Max_Task_Entries => 0.
 
@@ -92,20 +105,25 @@
 
 !discussion
 
-a) Pragma Profile is presented as an "alternative" mode of operation rather
-than a "non-standard" mode as in section 1.1.5(11) since its inclusion in the
-Standard makes it not non-standard. Other profiles may be defined by an
-implementation, for example to define the SPARK subset, or to define variations
-of the Ravenscar definition such as Ravenscar_Non_Preemptive.
+a) To give Ravenscar prominence it is given its own section within Annex D.
+Moving the definition of pragma Profile to 13.12 would cause considerable
+disruption to that section.
+
+b) Other profiles may be defined by an implementation, for example to
+define the SPARK subset, or to define variations of the Ravenscar
+definition such as Ravenscar_Non_Preemptive.
 
-b) The restrictions forcing the maximum length of an entry queue to be one and
+c) The restrictions forcing the maximum length of an entry queue to be one and
 the maximum number of entries to be one are there for deterministic operation
 of entry queue servicing and to simplify the runtime implementation. The
 semantics are intended to be consistent with those for blocking on a
 suspension object via Suspend_Until_True.
 
-c) Static attachment of interrupt handlers via pragma Attach_Handler is
+d) Static attachment of interrupt handlers via pragma Attach_Handler is
 supported.
+
+e) Should the identifier for Ravenscar actually be Ravenscar_Profile
+with Implementation Advice that all profiles end with _Profile?
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent