1------------------------------------------------------------------------------ 2-- -- 3-- GNAT RUN-TIME COMPONENTS -- 4-- -- 5-- SYSTEM.MULTIPROCESSORS.DISPATCHING_DOMAINS -- 6-- -- 7-- S p e c -- 8-- -- 9-- This specification is derived from the Ada Reference Manual for use with -- 10-- GNAT. In accordance with the copyright of that document, you can freely -- 11-- copy and modify this specification, provided that if you redistribute a -- 12-- modified version, any changes that you have made are clearly indicated. -- 13-- -- 14------------------------------------------------------------------------------ 15 16with Ada.Real_Time; 17 18with Ada.Task_Identification; 19 20private with System.Tasking; 21 22package System.Multiprocessors.Dispatching_Domains is 23 -- pragma Preelaborate (Dispatching_Domains); 24 -- ??? According to AI 167 this unit should be preelaborate, but it cannot 25 -- be preelaborate because it depends on Ada.Real_Time which is not 26 -- preelaborate. 27 28 Dispatching_Domain_Error : exception; 29 30 type Dispatching_Domain (<>) is limited private; 31 32 System_Dispatching_Domain : constant Dispatching_Domain; 33 34 function Create (First, Last : CPU) return Dispatching_Domain; 35 36 function Get_First_CPU (Domain : Dispatching_Domain) return CPU; 37 38 function Get_Last_CPU (Domain : Dispatching_Domain) return CPU; 39 40 function Get_Dispatching_Domain 41 (T : Ada.Task_Identification.Task_Id := 42 Ada.Task_Identification.Current_Task) return Dispatching_Domain; 43 44 procedure Assign_Task 45 (Domain : in out Dispatching_Domain; 46 CPU : CPU_Range := Not_A_Specific_CPU; 47 T : Ada.Task_Identification.Task_Id := 48 Ada.Task_Identification.Current_Task); 49 50 procedure Set_CPU 51 (CPU : CPU_Range; 52 T : Ada.Task_Identification.Task_Id := 53 Ada.Task_Identification.Current_Task); 54 55 function Get_CPU 56 (T : Ada.Task_Identification.Task_Id := 57 Ada.Task_Identification.Current_Task) return CPU_Range; 58 59 procedure Delay_Until_And_Set_CPU 60 (Delay_Until_Time : Ada.Real_Time.Time; 61 CPU : CPU_Range); 62 63private 64 type Dispatching_Domain is new System.Tasking.Dispatching_Domain_Access; 65 66 System_Dispatching_Domain : constant Dispatching_Domain := 67 Dispatching_Domain 68 (System.Tasking.System_Domain); 69end System.Multiprocessors.Dispatching_Domains; 70