File : a-interr.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                        GNAT RUN-TIME COMPONENTS                          --
   4 --                                                                          --
   5 --                       A D A . I N T E R R U P T S                        --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- This specification is derived from the Ada Reference Manual for use with --
  12 -- GNAT. The copyright notice above, and the license provisions that follow --
  13 -- apply solely to the  contents of the part following the private keyword. --
  14 --                                                                          --
  15 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  16 -- terms of the  GNU General Public License as published  by the Free Soft- --
  17 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  18 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  19 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  20 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  21 --                                                                          --
  22 --                                                                          --
  23 --                                                                          --
  24 --                                                                          --
  25 --                                                                          --
  26 -- You should have received a copy of the GNU General Public License and    --
  27 -- a copy of the GCC Runtime Library Exception along with this program;     --
  28 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  29 -- <http://www.gnu.org/licenses/>.                                          --
  30 --                                                                          --
  31 -- GNAT was originally developed  by the GNAT team at  New York University. --
  32 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  33 --                                                                          --
  34 ------------------------------------------------------------------------------
  35 
  36 with System.Interrupts;
  37 with System.Multiprocessors;
  38 with Ada.Task_Identification;
  39 
  40 package Ada.Interrupts is
  41 
  42    type Interrupt_ID is new System.Interrupts.Ada_Interrupt_ID;
  43 
  44    type Parameterless_Handler is access protected procedure;
  45 
  46    function Is_Reserved (Interrupt : Interrupt_ID) return Boolean with
  47      SPARK_Mode,
  48      Volatile_Function,
  49      Global => Ada.Task_Identification.Tasking_State;
  50 
  51    function Is_Attached (Interrupt : Interrupt_ID) return Boolean with
  52      SPARK_Mode,
  53      Volatile_Function,
  54      Global => Ada.Task_Identification.Tasking_State;
  55 
  56    function Current_Handler
  57      (Interrupt : Interrupt_ID) return Parameterless_Handler
  58    with
  59      SPARK_Mode => Off,
  60      Global     => null;
  61 
  62    procedure Attach_Handler
  63      (New_Handler : Parameterless_Handler;
  64       Interrupt   : Interrupt_ID)
  65    with
  66      SPARK_Mode => Off,
  67      Global     => null;
  68 
  69    procedure Exchange_Handler
  70      (Old_Handler : out Parameterless_Handler;
  71       New_Handler : Parameterless_Handler;
  72       Interrupt   : Interrupt_ID)
  73    with
  74      SPARK_Mode => Off,
  75      Global     => null;
  76 
  77    procedure Detach_Handler (Interrupt : Interrupt_ID) with
  78      SPARK_Mode,
  79      Global => (In_Out => Ada.Task_Identification.Tasking_State);
  80 
  81    function Reference (Interrupt : Interrupt_ID) return System.Address with
  82      SPARK_Mode => Off,
  83      Global     => null;
  84 
  85    function Get_CPU
  86      (Interrupt : Interrupt_ID) return System.Multiprocessors.CPU_Range
  87    with
  88      SPARK_Mode,
  89      Volatile_Function,
  90      Global => Ada.Task_Identification.Tasking_State;
  91 
  92 private
  93    pragma Inline (Is_Reserved);
  94    pragma Inline (Is_Attached);
  95    pragma Inline (Current_Handler);
  96    pragma Inline (Attach_Handler);
  97    pragma Inline (Detach_Handler);
  98    pragma Inline (Exchange_Handler);
  99    pragma Inline (Get_CPU);
 100 end Ada.Interrupts;