1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef MCA_PMIX_EXT11_H
15 #define MCA_PMIX_EXT11_H
16
17 #include "opal_config.h"
18
19 #ifdef HAVE_SYS_SOCKET_H
20 #include <sys/socket.h>
21 #endif
22 #ifdef HAVE_SYS_UN_H
23 #include <sys/un.h>
24 #endif
25
26 #include "opal/mca/mca.h"
27 #include "opal/mca/event/event.h"
28 #include "opal/util/proc.h"
29
30 #include "opal/mca/pmix/pmix.h"
31 #include "pmix_server.h"
32 #include "pmix/pmix_common.h"
33
34 BEGIN_C_DECLS
35
36 typedef struct {
37 opal_pmix_base_component_t super;
38 opal_list_t jobids;
39 opal_list_t values;
40 bool native_launch;
41 } mca_pmix_ext1x_component_t;
42
43 OPAL_DECLSPEC extern mca_pmix_ext1x_component_t mca_pmix_ext1x_component;
44
45 OPAL_DECLSPEC extern const opal_pmix_base_module_t opal_pmix_ext1x_module;
46
47
48 typedef struct {
49 opal_list_item_t super;
50 opal_jobid_t jobid;
51 char nspace[PMIX_MAX_NSLEN + 1];
52 } opal_pmix1_jobid_trkr_t;
53 OBJ_CLASS_DECLARATION(opal_pmix1_jobid_trkr_t);
54
55 typedef struct {
56 opal_object_t super;
57 pmix_proc_t p;
58 pmix_proc_t *procs;
59 size_t nprocs;
60 pmix_proc_t *error_procs;
61 size_t nerror_procs;
62 pmix_info_t *info;
63 size_t ninfo;
64 pmix_app_t *apps;
65 size_t sz;
66 volatile bool active;
67 opal_pmix_op_cbfunc_t opcbfunc;
68 opal_pmix_modex_cbfunc_t mdxcbfunc;
69 opal_pmix_value_cbfunc_t valcbfunc;
70 opal_pmix_lookup_cbfunc_t lkcbfunc;
71 opal_pmix_spawn_cbfunc_t spcbfunc;
72 void *cbdata;
73 } pmix1_opcaddy_t;
74 OBJ_CLASS_DECLARATION(pmix1_opcaddy_t);
75
76 typedef struct {
77 opal_object_t super;
78 opal_list_t procs;
79 opal_list_t info;
80 opal_list_t apps;
81 pmix_op_cbfunc_t opcbfunc;
82 pmix_dmodex_response_fn_t dmdxfunc;
83 pmix_modex_cbfunc_t mdxcbfunc;
84 pmix_lookup_cbfunc_t lkupcbfunc;
85 pmix_spawn_cbfunc_t spwncbfunc;
86 void *cbdata;
87 opal_pmix_release_cbfunc_t odmdxfunc;
88 void *ocbdata;
89 } pmix1_opalcaddy_t;
90 OBJ_CLASS_DECLARATION(pmix1_opalcaddy_t);
91
92
93
94 OPAL_MODULE_DECLSPEC int pmix1_client_init(opal_list_t *ilist);
95 OPAL_MODULE_DECLSPEC int pmix1_client_finalize(void);
96 OPAL_MODULE_DECLSPEC int pmix1_initialized(void);
97 OPAL_MODULE_DECLSPEC int pmix1_abort(int flag, const char *msg,
98 opal_list_t *procs);
99 OPAL_MODULE_DECLSPEC int pmix1_commit(void);
100 OPAL_MODULE_DECLSPEC int pmix1_fence(opal_list_t *procs, int collect_data);
101 OPAL_MODULE_DECLSPEC int pmix1_fencenb(opal_list_t *procs, int collect_data,
102 opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
103 OPAL_MODULE_DECLSPEC int pmix1_put(opal_pmix_scope_t scope,
104 opal_value_t *val);
105 OPAL_MODULE_DECLSPEC int pmix1_get(const opal_process_name_t *proc, const char *key,
106 opal_list_t *info, opal_value_t **val);
107 OPAL_MODULE_DECLSPEC int pmix1_getnb(const opal_process_name_t *proc, const char *key,
108 opal_list_t *info,
109 opal_pmix_value_cbfunc_t cbfunc, void *cbdata);
110 OPAL_MODULE_DECLSPEC int pmix1_publish(opal_list_t *info);
111 OPAL_MODULE_DECLSPEC int pmix1_publishnb(opal_list_t *info,
112 opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
113 OPAL_MODULE_DECLSPEC int pmix1_lookup(opal_list_t *data, opal_list_t *info);
114 OPAL_MODULE_DECLSPEC int pmix1_lookupnb(char **keys, opal_list_t *info,
115 opal_pmix_lookup_cbfunc_t cbfunc, void *cbdata);
116 OPAL_MODULE_DECLSPEC int pmix1_unpublish(char **keys, opal_list_t *info);
117 OPAL_MODULE_DECLSPEC int pmix1_unpublishnb(char **keys, opal_list_t *info,
118 opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
119 OPAL_MODULE_DECLSPEC int pmix1_spawn(opal_list_t *job_info, opal_list_t *apps, opal_jobid_t *jobid);
120 OPAL_MODULE_DECLSPEC int pmix1_spawnnb(opal_list_t *job_info, opal_list_t *apps,
121 opal_pmix_spawn_cbfunc_t cbfunc, void *cbdata);
122 OPAL_MODULE_DECLSPEC int pmix1_connect(opal_list_t *procs);
123 OPAL_MODULE_DECLSPEC int pmix1_connectnb(opal_list_t *procs,
124 opal_pmix_op_cbfunc_t cbfunc,
125 void *cbdata);
126 OPAL_MODULE_DECLSPEC int pmix1_disconnect(opal_list_t *procs);
127 OPAL_MODULE_DECLSPEC int pmix1_disconnectnb(opal_list_t *procs,
128 opal_pmix_op_cbfunc_t cbfunc,
129 void *cbdata);
130 OPAL_MODULE_DECLSPEC int pmix1_resolve_peers(const char *nodename, opal_jobid_t jobid,
131 opal_list_t *procs);
132 OPAL_MODULE_DECLSPEC int pmix1_resolve_nodes(opal_jobid_t jobid, char **nodelist);
133
134
135 OPAL_MODULE_DECLSPEC int pmix1_store_local(const opal_process_name_t *proc,
136 opal_value_t *val);
137
138
139 OPAL_MODULE_DECLSPEC int pmix1_server_init(opal_pmix_server_module_t *module,
140 opal_list_t *info);
141 OPAL_MODULE_DECLSPEC int pmix1_server_finalize(void);
142 OPAL_MODULE_DECLSPEC int pmix1_server_gen_regex(const char *input, char **regex);
143 OPAL_MODULE_DECLSPEC int pmix1_server_gen_ppn(const char *input, char **ppn);
144 OPAL_MODULE_DECLSPEC int pmix1_server_register_nspace(opal_jobid_t jobid,
145 int nlocalprocs,
146 opal_list_t *info,
147 opal_pmix_op_cbfunc_t cbfunc,
148 void *cbdata);
149 OPAL_MODULE_DECLSPEC void pmix1_server_deregister_nspace(opal_jobid_t jobid,
150 opal_pmix_op_cbfunc_t cbfunc,
151 void *cbdata);
152 OPAL_MODULE_DECLSPEC int pmix1_server_register_client(const opal_process_name_t *proc,
153 uid_t uid, gid_t gid,
154 void *server_object,
155 opal_pmix_op_cbfunc_t cbfunc,
156 void *cbdata);
157 OPAL_MODULE_DECLSPEC void pmix1_server_deregister_client(const opal_process_name_t *proc,
158 opal_pmix_op_cbfunc_t cbfunc,
159 void *cbdata);
160 OPAL_MODULE_DECLSPEC int pmix1_server_setup_fork(const opal_process_name_t *proc, char ***env);
161 OPAL_MODULE_DECLSPEC int pmix1_server_dmodex(const opal_process_name_t *proc,
162 opal_pmix_modex_cbfunc_t cbfunc, void *cbdata);
163 OPAL_MODULE_DECLSPEC int pmix1_server_notify_error(int status,
164 const opal_process_name_t *source,
165 opal_list_t *info,
166 opal_pmix_op_cbfunc_t cbfunc, void *cbdata);
167
168
169
170 OPAL_MODULE_DECLSPEC pmix_status_t pmix1_convert_opalrc(int rc);
171 OPAL_MODULE_DECLSPEC int pmix1_convert_rc(pmix_status_t rc);
172 OPAL_MODULE_DECLSPEC pmix_scope_t pmix1_convert_opalscope(opal_pmix_scope_t scope);
173 OPAL_MODULE_DECLSPEC void pmix1_value_load(pmix_value_t *v,
174 opal_value_t *kv);
175 OPAL_MODULE_DECLSPEC int pmix1_value_unload(opal_value_t *kv,
176 const pmix_value_t *v);
177
178 END_C_DECLS
179
180 #endif