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 : CPU; Last : CPU_Range) 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_Range; 39 40 type CPU_Set is array (CPU range <>) of Boolean; 41 42 function Create (Set : CPU_Set) return Dispatching_Domain; 43 44 function Get_CPU_Set (Domain : Dispatching_Domain) return CPU_Set; 45 46 function Get_Dispatching_Domain 47 (T : Ada.Task_Identification.Task_Id := 48 Ada.Task_Identification.Current_Task) return Dispatching_Domain; 49 50 procedure Assign_Task 51 (Domain : in out Dispatching_Domain; 52 CPU : CPU_Range := Not_A_Specific_CPU; 53 T : Ada.Task_Identification.Task_Id := 54 Ada.Task_Identification.Current_Task); 55 56 procedure Set_CPU 57 (CPU : CPU_Range; 58 T : Ada.Task_Identification.Task_Id := 59 Ada.Task_Identification.Current_Task); 60 61 function Get_CPU 62 (T : Ada.Task_Identification.Task_Id := 63 Ada.Task_Identification.Current_Task) return CPU_Range; 64 65 procedure Delay_Until_And_Set_CPU 66 (Delay_Until_Time : Ada.Real_Time.Time; 67 CPU : CPU_Range); 68 69private 70 type Dispatching_Domain is new System.Tasking.Dispatching_Domain_Access; 71 72 System_Dispatching_Domain : constant Dispatching_Domain := 73 Dispatching_Domain 74 (System.Tasking.System_Domain); 75end System.Multiprocessors.Dispatching_Domains; 76