CVS difference for ais/ai-00305.txt

Differences between 1.1 and version 1.2
Log of other versions for file ais/ai-00305.txt

--- ais/ai-00305.txt	2002/07/23 01:05:25	1.1
+++ ais/ai-00305.txt	2002/10/01 03:08:54	1.2
@@ -1,22 +1,24 @@
-!standard D.7 (00)                                   02-07-17  AI95-00305/01
+!standard D.7 (00)                                   02-09-02  AI95-00305/02
 !class amendment 02-07-17
 !status work item 02-07-17
 !status received 02-07-17
 !priority High
 !difficulty Medium
-!subject Additional Restrictions for Real-Time Systems
+!subject New pragma and additional restriction identifiers for Real-Time Systems
 
 !summary
 
-A new pragma and restrictions 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 and restrictions are proposed to enhance the ability to
+create highly-efficient and predictable tasking runtime systems.
 
 !problem
 
-The Ravenscar Profile is commonly used in Safety-Critical and High-Integrity
-applications. However, the profile is incompletely supported by the standard,
-requiring users to fall back on vendor-specific extensions.
+Experience constructing the "highly efficient tasking runtime systems"
+of D.7 has shown that the set of restrictions is insufficient. In particular,
+the Ravenscar Profile is commonly used in Safety-Critical and High-Integrity
+applications to provide a highly efficient tasking runtime. However, the
+profile requires restrictions beyond those defined by the Standard,
+requiring users to fall back on vendor-defined extensions.
 
 !proposal
 
@@ -25,20 +27,14 @@
 These identifiers may be used to specify runtime behavior which is independent
 of the Ravenscar definition.
 
-A new pragam is also defined to force an implementation to detect blocking
+A new pragma is also defined to force an implementation to detect blocking
 within a protected operation.
 
 !wording
 
-The following new pragma Restrictions identifiers are defined and added
-to D.7:
+The following new static restriction_identifiers are defined and
+inserted after D.7(10):
 
-Max_Entry_Queue_Length = N
-	Max_Entry_Queue_Length defines the maximum number N of calls
-	that are queued on an entry. Violation of this restriction
-	results in the raising of Program_Error exception at the point
-	of the call.
-
 No_Calendar
 	There are no semantic dependencies on package Ada.Calendar.
 
@@ -72,24 +68,44 @@
 	of the enclosing protected object.
 
 
-The following pragma is defined in D.7:
+The following new dynamic restrictions_identifier is defined and
+replaces D.7(15/1):
 
-Syntax
+No_Task_Termination
+	All tasks are non-terminating. An implementation must define what
+	happens if a task attempts to terminate.
+
+
+The following new dynamic restrictions_parameter_identifier is defined and
+inserted after D.7(19/1):
+
+Max_Entry_Queue_Length
+	Max_Entry_Queue_Length defines the maximum number of calls
+	that are queued on an entry. Violation of this restriction
+	results in the raising of Program_Error exception at the point
+	of the call.
+
+
+The following pragma is defined as a new subsection H.5:
+
+H.5 Pragma Detect_Blocking
+
+The following pragma forces an implementation to detect potentially
+blocking operations within a protected operation.
 
+Syntax
+The form of a pragma Detect_Blocking is as follows:
 pragma Detect_Blocking;
 
 Static Semantics
-
 The pragma is a configuration pragma.
 
 Post-Compilation Rules
-
 An implementation is required to detect a potentially blocking
 operation within a protected operation, and to raise Program_Error
 as required under 9.5.1(17).
 
 Implementation Permissions
-
 An operation that causes a task to be blocked within a foreign language
 domain is not defined to be potentially blocking, and may not be detected.
 
@@ -100,9 +116,8 @@
 a) The pragma No_Task_Hierarchy must impose the constraint that all tasks
 depend directly on the Environment task as a result of all task objects being
 created by library level declarations. The restriction means that no support
-is needed for "masters" and "waiting for dependent tasks" even for tasks
-declared within the main subprogram. This also matches the semantics for
-pragma No_Local_Protected_Objects.
+is needed for "masters" and "waiting for dependent tasks". This also matches
+the semantics for pragma No_Local_Protected_Objects.
 
 b) No_Protected_Type_Allocators matches the existing restriction
 No_Task_Allocators.
@@ -113,6 +128,9 @@
 
 d) No_Select_Statements excludes selective_accept, timed and
 conditional (protected) entry calls, and asynchronous_select.
+
+e) Some restriction identifiers concerning tasking are actually defined in
+H.4. For reasons of minimum change it is not proposed to move them.
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent