Warning, file /include/pmix/src/mca/ptl/base/base.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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