D.14.3 Execution Time of Interrupt Handlers
This subclause describes a language-defined package 
to measure the execution time of interrupt handlers. 
Static Semantics
The following language-defined 
library package exists: 
with Ada.Interrupts;
package Ada.Execution_Time.Interrupts 
is
   function Clock (Interrupt : Ada.Interrupts.Interrupt_Id)
        
return CPU_Time;
   
function Supported (Interrupt : Ada.Interrupts.Interrupt_Id)
        
return Boolean;
end Ada.Execution_Time.Interrupts;
 
The execution time or CPU time of a given interrupt 
Interrupt is defined as the time spent by the system executing interrupt 
handlers identified by Interrupt, including the time spent executing 
run-time or system services on its behalf. The mechanism used to measure 
execution time is implementation defined. Time spent executing interrupt 
handlers is distinct from time spent executing any task. 
For each interrupt, the execution time value is initially 
set to zero. 
Dynamic Semantics
The function Clock returns the current cumulative 
execution time of the interrupt identified by Interrupt. If Separate_Interrupt_Clocks_Supported 
is set to False the function raises Program_Error.
The function Supported returns True if the implementation 
is monitoring the execution time of the interrupt identified by Interrupt; 
otherwise, it returns False. For any Interrupt_Id Interrupt for which 
Supported(Interrupt) returns False, the function Clock(Interrupt) will 
return a value equal to Ada.Execution_Time.Time_Of(0).
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe