File : s-mudido.adb


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT RUN-TIME COMPONENTS                         --
   4 --                                                                          --
   5 --                SYSTEM.MULTIPROCESSORS.DISPATCHING_DOMAINS                --
   6 --                                                                          --
   7 --                                  B o d y                                 --
   8 --                                                                          --
   9 --          Copyright (C) 2011-2014, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- GNARL is free software; you can  redistribute it  and/or modify it under --
  12 -- terms of the  GNU General Public License as published  by the Free Soft- --
  13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  16 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  17 --                                                                          --
  18 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  21 --                                                                          --
  22 -- You should have received a copy of the GNU General Public License and    --
  23 -- a copy of the GCC Runtime Library Exception along with this program;     --
  24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  25 -- <http://www.gnu.org/licenses/>.                                          --
  26 --                                                                          --
  27 -- GNARL was developed by the GNARL team at Florida State University.       --
  28 -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
  29 --                                                                          --
  30 ------------------------------------------------------------------------------
  31 
  32 --  Body used on unimplemented targets, where the operating system does not
  33 --  support setting task affinities.
  34 
  35 package body System.Multiprocessors.Dispatching_Domains is
  36 
  37    -----------------------
  38    -- Local subprograms --
  39    -----------------------
  40 
  41    procedure Freeze_Dispatching_Domains;
  42    pragma Export
  43      (Ada, Freeze_Dispatching_Domains, "__gnat_freeze_dispatching_domains");
  44    --  Signal the time when no new dispatching domains can be created. It
  45    --  should be called before the environment task calls the main procedure
  46    --  (and after the elaboration code), so the binder-generated file needs to
  47    --  import and call this procedure.
  48 
  49    -----------------
  50    -- Assign_Task --
  51    -----------------
  52 
  53    procedure Assign_Task
  54      (Domain : in out Dispatching_Domain;
  55       CPU    : CPU_Range := Not_A_Specific_CPU;
  56       T      : Ada.Task_Identification.Task_Id :=
  57                  Ada.Task_Identification.Current_Task)
  58    is
  59       pragma Unreferenced (Domain, CPU, T);
  60    begin
  61       raise Dispatching_Domain_Error with "dispatching domains not supported";
  62    end Assign_Task;
  63 
  64    ------------
  65    -- Create --
  66    ------------
  67 
  68    function Create (First : CPU; Last : CPU_Range) return Dispatching_Domain is
  69       pragma Unreferenced (First, Last);
  70    begin
  71       return raise Dispatching_Domain_Error with
  72         "dispatching domains not supported";
  73    end Create;
  74 
  75    function Create (Set : CPU_Set) return Dispatching_Domain is
  76       pragma Unreferenced (Set);
  77    begin
  78       return raise Dispatching_Domain_Error with
  79         "dispatching domains not supported";
  80    end Create;
  81 
  82    -----------------------------
  83    -- Delay_Until_And_Set_CPU --
  84    -----------------------------
  85 
  86    procedure Delay_Until_And_Set_CPU
  87      (Delay_Until_Time : Ada.Real_Time.Time;
  88       CPU              : CPU_Range)
  89    is
  90       pragma Unreferenced (Delay_Until_Time, CPU);
  91    begin
  92       raise Dispatching_Domain_Error with "dispatching domains not supported";
  93    end Delay_Until_And_Set_CPU;
  94 
  95    --------------------------------
  96    -- Freeze_Dispatching_Domains --
  97    --------------------------------
  98 
  99    procedure Freeze_Dispatching_Domains is
 100    begin
 101       null;
 102    end Freeze_Dispatching_Domains;
 103 
 104    -------------
 105    -- Get_CPU --
 106    -------------
 107 
 108    function Get_CPU
 109      (T : Ada.Task_Identification.Task_Id :=
 110             Ada.Task_Identification.Current_Task) return CPU_Range
 111    is
 112       pragma Unreferenced (T);
 113    begin
 114       return Not_A_Specific_CPU;
 115    end Get_CPU;
 116 
 117    -----------------
 118    -- Get_CPU_Set --
 119    -----------------
 120 
 121    function Get_CPU_Set (Domain : Dispatching_Domain) return CPU_Set is
 122       pragma Unreferenced (Domain);
 123    begin
 124       return raise Dispatching_Domain_Error
 125         with "dispatching domains not supported";
 126    end Get_CPU_Set;
 127 
 128    ----------------------------
 129    -- Get_Dispatching_Domain --
 130    ----------------------------
 131 
 132    function Get_Dispatching_Domain
 133      (T : Ada.Task_Identification.Task_Id :=
 134             Ada.Task_Identification.Current_Task) return Dispatching_Domain
 135    is
 136       pragma Unreferenced (T);
 137    begin
 138       return System_Dispatching_Domain;
 139    end Get_Dispatching_Domain;
 140 
 141    -------------------
 142    -- Get_First_CPU --
 143    -------------------
 144 
 145    function Get_First_CPU (Domain : Dispatching_Domain) return CPU is
 146       pragma Unreferenced (Domain);
 147    begin
 148       return CPU'First;
 149    end Get_First_CPU;
 150 
 151    ------------------
 152    -- Get_Last_CPU --
 153    ------------------
 154 
 155    function Get_Last_CPU (Domain : Dispatching_Domain) return CPU_Range is
 156       pragma Unreferenced (Domain);
 157    begin
 158       return Number_Of_CPUs;
 159    end Get_Last_CPU;
 160 
 161    -------------
 162    -- Set_CPU --
 163    -------------
 164 
 165    procedure Set_CPU
 166      (CPU : CPU_Range;
 167       T   : Ada.Task_Identification.Task_Id :=
 168               Ada.Task_Identification.Current_Task)
 169    is
 170       pragma Unreferenced (CPU, T);
 171    begin
 172       raise Dispatching_Domain_Error with "dispatching domains not supported";
 173    end Set_CPU;
 174 
 175 end System.Multiprocessors.Dispatching_Domains;