CVS difference for ais/ai-00307.txt

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

--- ais/ai-00307.txt	2003/09/30 02:01:13	1.7
+++ ais/ai-00307.txt	2003/11/25 02:24:25	1.8
@@ -1,4 +1,4 @@
-!standard D.14 (01)                                  03-09-21  AI95-00307/05
+!standard D.14 (01)                                  03-11-24  AI95-00307/06
 !class amendment 02-08-28
 !status work item 03-09-21
 !status ARG Approved 12-0-1  03-06-20
@@ -103,7 +103,7 @@
    CPU_Tick : constant Time_Span;
 
    function Clock
-     (Tid : Ada.Task_Identification.Task_ID
+     (T : Ada.Task_Identification.Task_ID
           := Ada.Task_Identification.Current_Task)
      return CPU_Time;
 
@@ -122,19 +122,19 @@
 
    function Time_Of (SC : Seconds_Count; TS : Time_Span) return CPU_Time;
 
-   type Timer (Tid : access Ada.Task_Identification.Task_ID) is
+   type Timer (T : access Ada.Task_Identification.Task_ID) is
       limited private;
 
-   Min_Announce_Ceiling : constant System.Any_Priority :=
-    <Implementation Defined>;
+   type Handler is access protected procedure (TM : in out Timer);
 
-   type Announce is access protected procedure (T : in out Timer);
+   Min_Handler_Ceiling : constant System.Any_Priority :=
+    <Implementation Defined>;
 
-   procedure Arm (T: in out Timer; Interval : Time_Span; Handler : Announce);
-   procedure Arm (T: in out Timer; Abs_Time : CPU_Time;  Handler : Announce);
-   procedure Disarm(T : in out Timer);
-   function Timer_Has_Expired(T : Timer) return Boolean;
-   function Time_Remaining(T : Timer) return Time_Span;
+   procedure Arm (TM: in out Timer; Interval : Time_Span; H : Handler);
+   procedure Arm (TM: in out Timer; Abs_Time : CPU_Time;  H : Handler);
+   procedure Disarm(TM : in out Timer);
+   function Timer_Has_Expired(TM : Timer) return Boolean;
+   function Time_Remaining(TM : Timer) return Time_Span;
 
    Timer_Error : exception;
 
@@ -194,14 +194,14 @@
 task specified by the access discriminant T. This type has operations for the
 application tasks to arm or disarm a timer, and to determine whether a timer
 has expired or not (Timer_Has_Expired). In addition, when arming the timer, an
-access to a protected procedure (type Announce) can be passed. This procedure
+access to a protected procedure (type Handler) is passed. This procedure
 will be called by the implementation when the timer expires. This can be used
 by the application (for example) to trigger the abortion of the instructions of
 a select statement with an abortable part.
 
-The constant Min_Announce_Ceiling indicates the minimum ceiling
+The constant Min_Handler_Ceiling indicates the minimum ceiling
 priority that must be assigned to any protected object associated with
-the Announce protected procedure.
+the Handler protected procedure.
 
 When a Timer object is created, or upon the first call to one of its Arm
 procedures, the resources required to operate a CPU-time timer based on
@@ -245,10 +245,23 @@
 Time_Remaining if an attempt is made to use a timer that is in the
 disarmed state.
 
+For all the operations and types defined in this package, Tasking_Error
+is raised if the task identified by T has terminated. Program_Error
+is raised if the value of T is Null_Task_ID.
+
+Erroneous Execution
+
+If a value of Task_ID is passed as a parameter to any of the subprograms
+of this package or used to define an object declared by a type provided by
+this package (or any language-defined child package of this package) and the
+corresponding task object no longer exists, the execution of the
+program is erroneous.
+
 Implementation Requirements
 
-The implementation shall ensure that the operations of this package
-can be called concurrently.
+For a given Timer object, the implementation shall perform the operations
+declared in this package atomically with respect to any of these
+operations on the same Timer object.
 
 When an object of type Timer is finalized, the system resources used by
 the timer shall be deallocated.
@@ -293,6 +306,10 @@
 bits need not support the full range and granularity of the CPU_Time
 type.
 
+Implementations may limit the number of timers that can be defined for
+each task. If this limit is exceed the Timer_Resource_Error exception
+is raised.
+
 Implementation Advice
 
 When appropriate, implementations should provide configuration
@@ -387,7 +404,7 @@
    protected Control is
      entry Wait_Budget_Expiry;
      procedure Budget_Expired(T : in out Ada.Real_Time.Execution_Time.Timer);
-     pragma Priority(Ada.Execution_Time.Min_Announce_Ceiling);
+     pragma Priority(Ada.Real_Time.Execution_Time.Min_Handler_Ceiling);
    private
      Expired : Boolean := False;
    end Control;

Questions? Ask the ACAA Technical Agent