diff options
Diffstat (limited to 'gcc/ada/s-parint.ads')
-rw-r--r-- | gcc/ada/s-parint.ads | 71 |
1 files changed, 50 insertions, 21 deletions
diff --git a/gcc/ada/s-parint.ads b/gcc/ada/s-parint.ads index cf0a8b396e5..a4ac13d0789 100644 --- a/gcc/ada/s-parint.ads +++ b/gcc/ada/s-parint.ads @@ -45,8 +45,20 @@ package System.Partition_Interface is type DSA_Implementation_Name is (No_DSA, GLADE_DSA, PolyORB_DSA); DSA_Implementation : constant DSA_Implementation_Name := No_DSA; + -- RCI receiving stubs contain a table of descriptors for + -- all user subprograms exported by the unit. + type Subprogram_Id is new Natural; - -- This type is used exclusively by stubs + First_RCI_Subprogram_Id : constant := 2; + + type RCI_Subp_Info is record + Addr : System.Address; + -- Local address of the proxy object + end record; + + type RCI_Subp_Info_Access is access all RCI_Subp_Info; + type RCI_Subp_Info_Array is array (Integer range <>) of + aliased RCI_Subp_Info; subtype Unit_Name is String; -- Name of Ada units @@ -59,42 +71,49 @@ package System.Partition_Interface is Addr : Interfaces.Unsigned_64; Asynchronous : Boolean; end record; + type RACW_Stub_Type_Access is access RACW_Stub_Type; -- This type is used by the expansion to implement distributed objects. -- Do not change its definition or its layout without updating -- exp_dist.adb. + type RAS_Proxy_Type is tagged limited record + All_Calls_Remote : Boolean; + Receiver : System.Address; + Subp_Id : Subprogram_Id; + end record; + + type RAS_Proxy_Type_Access is access RAS_Proxy_Type; + pragma No_Strict_Aliasing (RAS_Proxy_Type_Access); + -- This type is used by the expansion to implement distributed objects. + -- Do not change its definition or its layout without updating + -- Exp_Dist.Build_Remote_Supbrogram_Proxy_Type. + procedure Check - (Name : in Unit_Name; - Version : in String; - RCI : in Boolean := True); + (Name : Unit_Name; + Version : String; + RCI : Boolean := True); -- Use by the main subprogram to check that a remote receiver -- unit has has the same version than the caller's one. - function Get_Active_Partition_ID - (Name : Unit_Name) - return RPC.Partition_ID; + function Get_Active_Partition_ID (Name : Unit_Name) return RPC.Partition_ID; -- Similar in some respects to RCI_Info.Get_Active_Partition_ID - function Get_Active_Version - (Name : Unit_Name) - return String; + function Get_Active_Version (Name : Unit_Name) return String; -- Similar in some respects to Get_Active_Partition_ID function Get_Local_Partition_ID return RPC.Partition_ID; -- Return the Partition_ID of the current partition function Get_Passive_Partition_ID - (Name : Unit_Name) - return RPC.Partition_ID; + (Name : Unit_Name) return RPC.Partition_ID; -- Return the Partition_ID of the given shared passive partition function Get_Passive_Version (Name : Unit_Name) return String; -- Return the version corresponding to a shared passive unit function Get_RCI_Package_Receiver - (Name : Unit_Name) - return Interfaces.Unsigned_64; + (Name : Unit_Name) return Interfaces.Unsigned_64; -- Similar in some respects to RCI_Info.Get_RCI_Package_Receiver procedure Get_Unique_Remote_Pointer @@ -102,20 +121,30 @@ package System.Partition_Interface is -- Get a unique pointer on a remote object procedure Raise_Program_Error_Unknown_Tag - (E : in Ada.Exceptions.Exception_Occurrence); + (E : Ada.Exceptions.Exception_Occurrence); pragma No_Return (Raise_Program_Error_Unknown_Tag); -- Raise Program_Error with the same message as E one procedure Register_Receiving_Stub - (Name : in Unit_Name; - Receiver : in RPC.RPC_Receiver; - Version : in String := ""); + (Name : Unit_Name; + Receiver : RPC.RPC_Receiver; + Version : String := ""; + Subp_Info : System.Address; + Subp_Info_Len : Integer); -- Register the fact that the Name receiving stub is now elaborated. -- Register the access value to the package RPC_Receiver procedure. + procedure Get_RAS_Info + (Name : Unit_Name; + Subp_Id : Subprogram_Id; + Proxy_Address : out Interfaces.Unsigned_64); + -- Look up the address of the proxy object for the given subprogram + -- in the named unit, or Null_Address if not present on the local + -- partition. + procedure Register_Passive_Package - (Name : in Unit_Name; - Version : in String := ""); + (Name : Unit_Name; + Version : String := ""); -- Register a passive package generic @@ -126,7 +155,7 @@ package System.Partition_Interface is end RCI_Info; -- RCI package information caching - procedure Run (Main : in Main_Subprogram_Type := null); + procedure Run (Main : Main_Subprogram_Type := null); -- Run the main subprogram end System.Partition_Interface; |