1 ------------------------------------------------------------------------------
3 -- GNAT RUN-TIME COMPONENTS --
5 -- S Y S T E M . P A R T I T I O N _ I N T E R F A C E --
9 -- Copyright (C) 1995-2004 Free Software Foundation, Inc. --
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 2, or (at your option) any later ver- --
14 -- sion. GNARL 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. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNARL; see file COPYING. If not, write --
19 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
20 -- MA 02111-1307, USA. --
22 -- As a special exception, if other files instantiate generics from this --
23 -- unit, or you link this unit with other files to produce an executable, --
24 -- this unit does not by itself cause the resulting executable to be --
25 -- covered by the GNU General Public License. This exception does not --
26 -- however invalidate any other reasons why the executable file might be --
27 -- covered by the GNU Public License. --
29 -- GNAT was originally developed by the GNAT team at New York University. --
30 -- Extensive contributions were provided by Ada Core Technologies Inc. --
32 ------------------------------------------------------------------------------
34 -- This unit may be used directly from an application program by providing
35 -- an appropriate WITH, and the interface can be expected to remain stable.
41 package System.Partition_Interface is
43 pragma Elaborate_Body;
45 type DSA_Implementation_Name is (No_DSA, GLADE_DSA, PolyORB_DSA);
46 DSA_Implementation : constant DSA_Implementation_Name := No_DSA;
48 type Subprogram_Id is new Natural;
49 -- This type is used exclusively by stubs
51 subtype Unit_Name is String;
54 type Main_Subprogram_Type is access procedure;
56 type RACW_Stub_Type is tagged record
57 Origin : RPC.Partition_ID;
58 Receiver : Interfaces.Unsigned_64;
59 Addr : Interfaces.Unsigned_64;
60 Asynchronous : Boolean;
62 type RACW_Stub_Type_Access is access RACW_Stub_Type;
63 -- This type is used by the expansion to implement distributed objects.
64 -- Do not change its definition or its layout without updating
70 RCI : in Boolean := True);
71 -- Use by the main subprogram to check that a remote receiver
72 -- unit has has the same version than the caller's one.
74 function Get_Active_Partition_ID
76 return RPC.Partition_ID;
77 -- Similar in some respects to RCI_Info.Get_Active_Partition_ID
79 function Get_Active_Version
82 -- Similar in some respects to Get_Active_Partition_ID
84 function Get_Local_Partition_ID return RPC.Partition_ID;
85 -- Return the Partition_ID of the current partition
87 function Get_Passive_Partition_ID
89 return RPC.Partition_ID;
90 -- Return the Partition_ID of the given shared passive partition
92 function Get_Passive_Version (Name : Unit_Name) return String;
93 -- Return the version corresponding to a shared passive unit
95 function Get_RCI_Package_Receiver
97 return Interfaces.Unsigned_64;
98 -- Similar in some respects to RCI_Info.Get_RCI_Package_Receiver
100 procedure Get_Unique_Remote_Pointer
101 (Handler : in out RACW_Stub_Type_Access);
102 -- Get a unique pointer on a remote object
104 procedure Raise_Program_Error_Unknown_Tag
105 (E : in Ada.Exceptions.Exception_Occurrence);
106 pragma No_Return (Raise_Program_Error_Unknown_Tag);
107 -- Raise Program_Error with the same message as E one
109 procedure Register_Receiving_Stub
110 (Name : in Unit_Name;
111 Receiver : in RPC.RPC_Receiver;
112 Version : in String := "");
113 -- Register the fact that the Name receiving stub is now elaborated.
114 -- Register the access value to the package RPC_Receiver procedure.
116 procedure Register_Passive_Package
117 (Name : in Unit_Name;
118 Version : in String := "");
119 -- Register a passive package
124 function Get_RCI_Package_Receiver return Interfaces.Unsigned_64;
125 function Get_Active_Partition_ID return RPC.Partition_ID;
127 -- RCI package information caching
129 procedure Run (Main : in Main_Subprogram_Type := null);
130 -- Run the main subprogram
132 end System.Partition_Interface;