CVS difference for ais/ai-00297.txt

Differences between 1.13 and version 1.14
Log of other versions for file ais/ai-00297.txt

--- ais/ai-00297.txt	2004/02/06 05:01:47	1.13
+++ ais/ai-00297.txt	2004/02/21 04:15:09	1.14
@@ -1,4 +1,4 @@
-!standard D.7 (00)                                     03-12-03  AI95-00297/07
+!standard D.7 (00)                                     04-02-06  AI95-00297/08
 !standard D.15(00)
 !class amendment 02-06-01
 !status work item 03-12-12
@@ -73,18 +73,24 @@
 
 Dynamic Semantics
 
-A call to a Set_Handler procedure returns after the Timing_Event
-denoted by Event is registered.
+A call to a Set_Handler procedure returns after the Timing_Event_Handler
+denoted by Handler is registered. The first Set_Handler procedure
+registers the Timing_Event_Handler for execution at time At_Time.
+The second Set_Handler procedure registers the Timing_Event_Handler
+for execution at time Ada.Real_Time.Clock + In_Time;
 
+A call to a Set_Handler procedure for a Timing_Event that is already
+set will initially cancel the earlier registration.
+The Timing_Event denoted by Event remains set.
+
 A call of either Set_Handler procedure is not a potentially blocking
 operation.
 
-Following a call of a Set_Handler procedure, at a time no earlier than and as
-soon as possible after the time specified by the time parameter, the
-Timing_Event_Handler procedure is executed. The rules governing timing accuracy
-are the same as in D.9. The Timing_Event_Handler is only executed if the timing
-event is set at the time of execution. As the initial action of the execution
-of the Timing_Event_Handler the Timing_Event denoted by Event is cleared.
+As soon as possible after the time registered for the event, the
+Timing_Event_Handler procedure is executed. The Timing_Event_Handler
+is only executed if the timing event is set at the time of execution.
+As the initial action of the execution of the Timing_Event_Handler
+the Timing_Event denoted by Event is cleared.
 
 If the Ceiling_Locking policy (see D.3) is in effect when a Set_Handler
 procedure is called, a check is made that the ceiling priority of
@@ -94,25 +100,23 @@
 If a Set_Handler procedure is called with zero or negative In_Time or with
 At_Time indicating a time in the past then Timing_Event_Handler is
 executed immediately by the task executing the Set_Handler call.
-The Timing_Event denoted by Event is cleared.
+The Timing_Event denoted by Event is cleared and the handler is not
+registered.
 
 An exception propagated from a Timing_Event_Handler invoked by
 a timing event has no effect.
 
-A call to a Set_Handler procedure for a Timing_Event that is already
-set will initially cancel the earlier registration.
-The Timing_Event denoted by Event remains set.
-
 A call to Is_Handler_Set returns True if Event is set;
 otherwise it returns False.
 
+A call to Current_Handler returns with the current Timing_Event_Handler.
+If the Timing_Event denoted by Event is not set, Current_Handler returns
+null.
+
 A call to Cancel_Handler returns after the Timing_Event denoted by Event
 is cleared. Cancelled is assigned True if Event was set prior to it
 being cleared; otherwise the parameter is assigned False.
 
-A call to Current_Handler returns with the current Timing_Event_Handler.
-If the Timing_Event denoted by Event is not set, Current_Handler returns null.
-
 A call to Time_Of_Event returns with the time of Event.
 If Event is not set, Time_Of_Event returns Ada.Real_Time.Time_First.
 
@@ -122,6 +126,13 @@
 If several timing events are registered for the same time,
 they are executed in FIFO order of registration.
 
+Metrics
+
+The Implementation shall document the following metric:
+  An upper bound on the lateness of the execution of a registered handler.
+  That is, the maximum time between when a handler is actually executed
+  and the time specified in the registration of that handler.
+
 Implementation Advice
 
 The protected handler procedure should be executed directly by the
@@ -335,26 +346,27 @@
   ... -- not specified by the language
 @b<end> Ada.Real_Time.Timing_Events;>
 
-An object of type Timing_Event is said to be set if it has a
-registered Timing_Event_Handler. An object is said to be cleared
+An object of type Timing_Event is said to be @i<set> if it has a
+registered Timing_Event_Handler. An object is said to be @i<cleared>
 if it has no registered Timing_Event_Handler. All Timing_Event objects
 are initially cleared.
 
 @i<@s8<Dynamic Semantics>>
 
-A call to a Set_Handler procedure returns after the Timing_Event
-denoted by Event is registered.
+A call to a Set_Handler procedure returns after the Timing_Event_Handler
+denoted by Handler is registered. The first Set_Handler procedure
+registers the Timing_Event_Handler for execution at time At_Time.
+The second Set_Handler procedure registers the Timing_Event_Handler
+for execution at time Ada.Real_Time.Clock + In_Time;
 
 A call of either Set_Handler procedure is not a potentially blocking
-operation and hence can be called from within an object of type
-Timing_Event_Handler.
+operation.
 
-Following a call of a Set_Handler procedure, at a time no earlier than and as
-soon as possible after the time specified by the Time parameter, the
-Timing_Event_Handler procedure is executed. The rules governing timing accuracy
-are the same as in D.9. The Timing_Event_Handler is only executed if the timing
-event is set at the time of execution. As the initial action of the execution
-of the Timing_Event_Handler the Timing_Event denoted by Event is cleared.
+As soon as possible after the time registered for the event, the
+Timing_Event_Handler procedure is executed. The Timing_Event_Handler
+is only executed if the timing event is set at the time of execution.
+As the initial action of the execution of the Timing_Event_Handler
+the Timing_Event denoted by Event is cleared.
 
 If the Ceiling_Locking policy (see D.3) is in effect when a Set_Handler
 procedure is called, a check is made that the ceiling priority of
@@ -364,25 +376,23 @@
 If a Set_Handler procedure is called with zero or negative In_Time or with
 At_Time indicating a time in the past then Timing_Event_Handler is
 executed immediately by the task executing the Set_Handler call.
-The Timing_Event denoted by Event is cleared.
+The Timing_Event denoted by Event is cleared and the handler is not
+registered.
 
 An exception propagated from a Timing_Event_Handler invoked by
 a timing event has no effect.
 
-A call to a Set_Handler procedure for a Timing_Event that is already
-set will initially cancel the earlier registration.
-The Timing_Event denoted by Event remains set.
-
 A call to Is_Handler_Set returns True if Event is set;
 otherwise it returns False.
 
+A call to Current_Handler returns with the current Timing_Event_Handler.
+If the Timing_Event denoted by Event is not set, Current_Handler returns
+null.
+
 A call to Cancel_Handler returns after the Timing_Event denoted by Event
 is cleared. Cancelled is assigned True if Event was set prior to it
 being cleared; otherwise the parameter is assigned False.
 
-A call to Current_Handler returns with the current Timing_Event_Handler.
-If the Timing_Event denoted by Event is not set, Current_Handler returns null.
-
 A call to Time_Of_Event returns with the time of Event.
 If Event is not set, Time_Of_Event returns Ada.Real_Time.Time_First.
 
@@ -392,6 +402,13 @@
 If several timing events are registered for the same time,
 they are executed in FIFO order of registration.
 
+@i<@s8<Metrics>>
+
+The Implementation shall document the following metric:
+@xbullet<An upper bound on the lateness of the execution of a registered
+handler. That is, the maximum time between when a handler is actually executed
+and the time specified in the registration of that handler.>
+
 @i<@s8<Implementation Advice>>
 
 The protected handler procedure should be executed directly by the
@@ -400,7 +417,6 @@
 NOTES@hr
 Since a call to Set_Handling is a not a blocking operation, it can be
 called from within an object of type Timing_Event_Handler.
-
 
 !ACATS Test
 

Questions? Ask the ACAA Technical Agent