CVS difference for ais/ai-00249.txt

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

--- ais/ai-00249.txt	2002/10/29 20:24:57	1.9
+++ ais/ai-00249.txt	2002/12/04 23:43:38	1.10
@@ -1,18 +1,17 @@
-!standard D.13 (01)                                  02-10-23  AI95-00249/08
+!standard D.13 (01)                                  02-12-03  AI95-00249/09
 !class amendment 00-12-04
 !status Amendment 200Y 02-10-23
-!status ARG approved 9-0-0  02-10-13
+!status ARG Approved 9-0-0  02-10-13
 !status work item 00-12-04
 !status received 00-12-04
 !priority High
 !difficulty Medium
-!subject Ravenscar Profile for High-Integrity Systems
+!subject Ravenscar profile for high-integrity systems
 
 !summary
 
-New pragmas are proposed to directly support the Ravenscar
-Profile -- an execution time profile suitable for use in High-Integrity and
-Safety-Critical applications.
+A new pragma directly supports the Ravenscar Profile -- an execution-time
+profile suitable for use in High-Integrity and Safety-Critical applications.
 
 !problem
 
@@ -22,11 +21,10 @@
 
 !proposal
 
-This amendment proposes a pragma-based mechanism to allow the application to
-request use of the Ravenscar Profile. It proposes the addition of a pragma to
-support the concept of a run-time profile. The amendment then proposes the
-run-time profile identifier "Ravenscar" to be defined in the standard and
-specifies its semantics.
+This amendment defines a pragma-based mechanism to allow applications to
+request use of the Ravenscar Profile. It adds a pragma to support the concept
+of a run-time profile. It also defines the run-time profile identifier
+"Ravenscar" and specifies its semantics.
 
 The proposal assumes that additional Restriction identifiers and pragma
 Detect_Blocking have been defined (see AI-305).
@@ -43,22 +41,24 @@
 D.13 Run-time Profiles and the Ravenscar Profile
 
 This clause specifies a mechanism for defining run-time profiles.
-It also defines one such profile, namely Ravenscar.
+It also defines one such profile, Ravenscar.
 
 Syntax
 The form of a pragma Profile is as follows:
-pragma Profile (profile_identifier [profile_argument_definition]);
+pragma Profile (profile_identifier [, profile_argument_associations]);
+profile_argument_associations ::= pragma_argument_association,
+    {pragma_argument_association}
 
 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.
+identifier. For profile_identifier Ravenscar, there shall be no
+profile_argument_associations. For other profile_identifiers, the
+semantics of any profile_argument_associations are implementation-defined.
 
 Static Semantics
-A profile is equivalent to the set of configuration pragmas that are
+A profile is equivalent to the set of configuration pragmas that is
 defined for each profile_identifier. The profile_identifier Ravenscar
-is equivalent to the following pragmas:
+is equivalent to the following set of pragmas:
 
 pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
 
@@ -67,25 +67,25 @@
 pragma Detect_Blocking;
 
 pragma Restrictions (
-		No_Abort_Statements,
-		No_Asynchronous_Control,
-		No_Calendar,
-		No_Dynamic_Attachment,
-		No_Dynamic_Priorities,
-		No_Implicit_Heap_Allocations,
-		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,
-		No_Task_Termination,
-		Simple_Barriers,
-		Max_Entry_Queue_Length => 1,
-		Max_Protected_Entries => 1,
-		Max_Task_Entries => 0);
+                Max_Entry_Queue_Length => 1,
+                Max_Protected_Entries => 1,
+                Max_Task_Entries => 0,
+                No_Abort_Statements,
+                No_Asynchronous_Control,
+                No_Calendar,
+                No_Dynamic_Attachment,
+                No_Dynamic_Priorities,
+                No_Implicit_Heap_Allocations,
+                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,
+                No_Task_Termination,
+                Simple_Barriers);
 
 Post-Compilation Rules
 Pragma Profile is a configuration pragma. There may be more than one
@@ -98,77 +98,81 @@
 
 !example
 
+To use the Ravenscar profile for a partition, we need to compile a pragma
+Profile before compiling any units:
+
+     pragma Profile (Ravenscar);
+
 !discussion
 
-a) To give Ravenscar prominence it is given its own section within Annex D.
+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.
-
-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 run-time implementation. The
-semantics are intended to be consistent with those for blocking on a
-suspension object via Suspend_Until_True.
+Other profiles may be defined by an implementation, for example to define the
+SPARK subset, or to define variations of the Ravenscar profile such as
+Ravenscar_Non_Preemptive.
+
+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 run-time implementation. The
+semantics are intended to be consistent with those for blocking on a suspension
+object via Suspend_Until_True.
 
-d) Static attachment of interrupt handlers via pragma Attach_Handler is
-supported.
+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?
-
 !corrigendum D.13(01)
 
 @dinsc
 
 This clause specifies a mechanism for defining run-time profiles.
-It also defines one such profile, namely Ravenscar.
+It also defines one such profile, Ravenscar.
 
 @i<@s8<Syntax>>
 
 The form of a pragma Profile is as follows:@hr
-@fa<@b<pragma> Profile (profile_identifier [profile_argument_definition]);>
+@fa<@b<pragma> Profile (@i<profile_>identifier [profile_argument_associations]);>
+
+@fa<profile_argument_associations ::= pragma_argument_association,
+{pragma_argument_association}>
 
 @i<@s8<Legality Rules>>
 
-The @fa<profile_identifier> shall be either Ravenscar or an
-implementation-defined identifier. For @fa<profile_identifier> Ravenscar,
-there shall be no @fa<profile_argument_definition>. For other
-@fa<profile_identifier>s, the semantics of the @fa<profile_argument_definition>
-are implementation-defined.
+The @fa<@i<profile_>identifier> shall be either Ravenscar or an
+implementation-defined identifier. For @fa<@i<profile_>identifier> Ravenscar,
+there shall be no @fa<profile_argument_associations>. For other
+@fa<@i<profile_>identifier>s, the semantics of any
+@fa<profile_argument_associations> are implementation-defined.
 
 @i<@s8<Static Semantics>>
 
-A profile is equivalent to the set of configuration pragmas that are
-defined for each @fa<profile_identifier>. The @fa<profile_identifier> Ravenscar
-is equivalent to the following pragmas:
+A profile is equivalent to the set of configuration pragmas that is
+defined for each @fa<@i<profile_>identifier>. The @fa<@i<profile_>identifier> Ravenscar
+is equivalent to the following set of pragmas:
 
 @xcode<@b<pragma> Task_Dispatching_Policy (FIFO_Within_Priorities);
 @b<pragma> Locking_Policy (Ceiling_Locking);
 @b<pragma> Detect_Blocking;
 @b<pragma> Restrictions (
-		No_Abort_Statements,
-		No_Asynchronous_Control,
-		No_Calendar,
-		No_Dynamic_Attachment,
-		No_Dynamic_Priorities,
-		No_Implicit_Heap_Allocations,
-		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,
-		No_Task_Termination,
-		Simple_Barriers,
-		Max_Entry_Queue_Length =@> 1,
-		Max_Protected_Entries =@> 1,
-		Max_Task_Entries =@> 0);>
+                Max_Entry_Queue_Length =@> 1,
+                Max_Protected_Entries =@> 1,
+                Max_Task_Entries =@> 0,
+                No_Abort_Statements,
+                No_Asynchronous_Control,
+                No_Calendar,
+                No_Dynamic_Attachment,
+                No_Dynamic_Priorities,
+                No_Implicit_Heap_Allocations,
+                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,
+                No_Task_Termination,
+                Simple_Barriers);>
 
 @i<@s8<Post-Compilation Rules>>
 

Questions? Ask the ACAA Technical Agent