File indexing completed on 2025-02-23 10:12:54
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #ifndef PMIX_PTL_BASE_H_
0027 #define PMIX_PTL_BASE_H_
0028
0029 #include "src/include/pmix_config.h"
0030
0031 #ifdef HAVE_SYS_TIME_H
0032 # include <sys/time.h> /* for struct timeval */
0033 #endif
0034 #ifdef HAVE_STRING_H
0035 # include <string.h>
0036 #endif
0037
0038 #include "src/class/pmix_pointer_array.h"
0039 #include "src/mca/base/pmix_mca_base_framework.h"
0040 #include "src/mca/mca.h"
0041
0042 #include "src/include/pmix_globals.h"
0043 #include "src/include/pmix_stdatomic.h"
0044 #include "src/mca/ptl/base/ptl_base_handshake.h"
0045 #include "src/mca/ptl/ptl.h"
0046
0047 BEGIN_C_DECLS
0048
0049
0050
0051
0052 PMIX_EXPORT extern pmix_mca_base_framework_t pmix_ptl_base_framework;
0053
0054
0055
0056
0057
0058
0059 PMIX_EXPORT pmix_status_t pmix_ptl_base_select(void);
0060
0061
0062 struct pmix_ptl_base_t {
0063 bool initialized;
0064 bool selected;
0065 pmix_list_t posted_recvs;
0066 pmix_list_t unexpected_msgs;
0067 pmix_listener_t listener;
0068 struct sockaddr_storage *connection;
0069 uint32_t current_tag;
0070 size_t max_msg_size;
0071 char *session_tmpdir;
0072 char *system_tmpdir;
0073 char *report_uri;
0074 char *uri;
0075 char *urifile;
0076 char *sysctrlr_filename;
0077 char *scheduler_filename;
0078 char *system_filename;
0079 char *session_filename;
0080 char *nspace_filename;
0081 char *pid_filename;
0082 char *rendezvous_filename;
0083 bool created_rendezvous_file;
0084 bool created_session_tmpdir;
0085 bool created_system_tmpdir;
0086 bool created_sysctrlr_filename;
0087 bool created_scheduler_filename;
0088 bool created_system_filename;
0089 bool created_session_filename;
0090 bool created_nspace_filename;
0091 bool created_pid_filename;
0092 bool created_urifile;
0093 bool remote_connections;
0094 bool system_tool;
0095 bool session_tool;
0096 bool tool_support;
0097 char *if_include;
0098 char *if_exclude;
0099 int ipv4_port;
0100 bool disable_ipv4_family;
0101 int ipv6_port;
0102 bool disable_ipv6_family;
0103 int max_retries;
0104 int wait_to_connect;
0105 int handshake_wait_time;
0106 int handshake_max_retries;
0107 };
0108 typedef struct pmix_ptl_base_t pmix_ptl_base_t;
0109
0110 PMIX_EXPORT extern pmix_ptl_base_t pmix_ptl_base;
0111
0112 typedef struct {
0113 pmix_list_item_t super;
0114 int sd;
0115 char *nspace;
0116 pmix_rank_t rank;
0117 char *uri;
0118 char *version;
0119 } pmix_connection_t;
0120 PMIX_CLASS_DECLARATION(pmix_connection_t);
0121
0122
0123 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_notification_cbfunc(pmix_ptl_cbfunc_t cbfunc);
0124 PMIX_EXPORT pmix_status_t pmix_ptl_base_connect_to_peer(struct pmix_peer_t *peer,
0125 pmix_info_t info[], size_t ninfo,
0126 char **suri);
0127 PMIX_EXPORT pmix_status_t pmix_ptl_base_parse_uri_file(char *filename,
0128 bool optional,
0129 pmix_list_t *connections);
0130
0131 PMIX_EXPORT pmix_status_t pmix_ptl_base_setup_connection(char *uri,
0132 struct sockaddr_storage *connection,
0133 size_t *len);
0134
0135 PMIX_EXPORT void pmix_ptl_base_post_recv(int fd, short args, void *cbdata);
0136 PMIX_EXPORT void pmix_ptl_base_cancel_recv(int sd, short args, void *cbdata);
0137
0138 PMIX_EXPORT pmix_status_t pmix_ptl_base_start_listening(pmix_info_t info[], size_t ninfo);
0139 PMIX_EXPORT void pmix_ptl_base_stop_listening(void);
0140 PMIX_EXPORT pmix_status_t pmix_base_write_rndz_file(char *filename, char *uri, bool *created);
0141
0142
0143 PMIX_EXPORT pmix_status_t pmix_ptl_base_check_server_uris(pmix_peer_t *peer, char **evar);
0144 PMIX_EXPORT pmix_status_t pmix_ptl_base_check_directives(pmix_info_t *info, size_t ninfo);
0145 PMIX_EXPORT pmix_status_t pmix_ptl_base_setup_fork(const pmix_proc_t *proc, char ***env);
0146 PMIX_EXPORT void pmix_ptl_base_send_handler(int sd, short flags, void *cbdata);
0147 PMIX_EXPORT void pmix_ptl_base_recv_handler(int sd, short flags, void *cbdata);
0148 PMIX_EXPORT void pmix_ptl_base_process_msg(int fd, short flags, void *cbdata);
0149 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_nonblocking(int sd);
0150 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_blocking(int sd);
0151 PMIX_EXPORT pmix_status_t pmix_ptl_base_send_blocking(int sd, char *ptr, size_t size);
0152 PMIX_EXPORT pmix_status_t pmix_ptl_base_recv_blocking(int sd, char *data, size_t size);
0153 PMIX_EXPORT pmix_status_t pmix_ptl_base_connect(struct sockaddr_storage *addr, pmix_socklen_t len,
0154 int *fd);
0155 PMIX_EXPORT void pmix_ptl_base_connection_handler(int sd, short args, void *cbdata);
0156 PMIX_EXPORT pmix_status_t pmix_ptl_base_setup_listener(pmix_info_t info[], size_t ninfo);
0157 PMIX_EXPORT pmix_status_t pmix_ptl_base_send_connect_ack(int sd);
0158 PMIX_EXPORT pmix_status_t pmix_ptl_base_recv_connect_ack(int sd);
0159 PMIX_EXPORT void pmix_ptl_base_lost_connection(pmix_peer_t *peer, pmix_status_t err);
0160 PMIX_EXPORT bool pmix_ptl_base_peer_is_earlier(pmix_peer_t *peer, uint8_t major, uint8_t minor,
0161 uint8_t release);
0162 PMIX_EXPORT void pmix_ptl_base_query_servers(int sd, short args, void *cbdata);
0163 PMIX_EXPORT pmix_status_t pmix_ptl_base_parse_uri(const char *evar, char **nspace,
0164 pmix_rank_t *rank, char **suri);
0165 PMIX_EXPORT pmix_status_t pmix_ptl_base_df_search(char *dirname, char *prefix, pmix_info_t info[],
0166 size_t ninfo, bool optional, pmix_list_t *connections);
0167 PMIX_EXPORT pmix_rnd_flag_t pmix_ptl_base_set_flag(size_t *sz);
0168 PMIX_EXPORT pmix_status_t pmix_ptl_base_make_connection(pmix_peer_t *peer, char *suri,
0169 pmix_info_t *iptr, size_t niptr);
0170 PMIX_EXPORT void pmix_ptl_base_complete_connection(pmix_peer_t *peer, char *nspace,
0171 pmix_rank_t rank);
0172 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_timeout(pmix_peer_t *peer, struct timeval *save,
0173 pmix_socklen_t *sz, bool *sockopt);
0174 PMIX_EXPORT void pmix_ptl_base_setup_socket(pmix_peer_t *peer);
0175 PMIX_EXPORT pmix_status_t pmix_ptl_base_client_handshake(pmix_peer_t *peer, pmix_status_t reply);
0176 PMIX_EXPORT pmix_status_t pmix_ptl_base_tool_handshake(pmix_peer_t *peer, pmix_status_t rp);
0177 PMIX_EXPORT char **pmix_ptl_base_split_and_resolve(const char *orig_str,
0178 const char *name);
0179 PMIX_EXPORT pmix_status_t pmix_ptl_base_set_peer(pmix_peer_t *peer, char *evar);
0180 PMIX_EXPORT char *pmix_ptl_base_get_cmd_line(void);
0181
0182 END_C_DECLS
0183
0184 #endif