root/opal/mca/pmix/ext1x/pmix1x.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2014-2018 Intel, Inc. All rights reserved.
   3  * Copyright (c) 2014-2015 Mellanox Technologies, Inc.
   4  *                         All rights reserved.
   5  * Copyright (c) 2016-2017 Research Organization for Information Science
   6  *                         and Technology (RIST). All rights reserved.
   7  * $COPYRIGHT$
   8  *
   9  * Additional copyrights may follow
  10  *
  11  * $HEADER$
  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 /****  INTERNAL OBJECTS  ****/
  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 /****  CLIENT FUNCTIONS  ****/
  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 /****  COMMON FUNCTIONS  ****/
 135 OPAL_MODULE_DECLSPEC int pmix1_store_local(const opal_process_name_t *proc,
 136                                              opal_value_t *val);
 137 
 138 /****  SERVER SOUTHBOUND FUNCTIONS  ****/
 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 /****  COMPONENT UTILITY FUNCTIONS  ****/
 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 /* MCA_PMIX_EXTERNAL_H */

/* [<][>][^][v][top][bottom][index][help] */