static int psdapl_ia_open(DAT_IA_HANDLE *ia_handlep) { char *dapl_provider = "<query>"; DAT_RETURN dat_rc; int ret; static int get_called = 0; if (!get_called) { get_called = 1; pscom_env_get_str(&dapl_provider, ENV_DAPL_PROVIDER); } if (strcmp(dapl_provider, "<query>")) { ret = psdapl_ia_open_name(ia_handlep, dapl_provider); } else { const unsigned max_providers = 64; DAT_PROVIDER_INFO _providers[max_providers]; DAT_PROVIDER_INFO *providers[max_providers]; DAT_COUNT i, n; unsigned j; /* Who wrote this stupid stupid DAT API? */ for (j = 0; j < max_providers; j++) { providers[j] = _providers + j; } /* query the names from dat.conf: */ dat_rc = dat_registry_list_providers(max_providers, &n, providers); if (dat_rc != DAT_SUCCESS) goto err_list_providers; if (n == 0) goto err_no_result; ret = -1; for (i = 0; i < n; i++) { ret = psdapl_ia_open_name(ia_handlep, providers[i]->ia_name); if (!ret) break; /* found working provider */ } } return ret; err_list_providers: psdapl_dprint_dat_err(1, dat_rc, "dat_registry_list_providers() failed. Use env " "%s={provider}", ENV_DAPL_PROVIDER); return -1; err_no_result: psdapl_dprint(1, "dat_registry_list_providers() without results. Use env " ENV_DAPL_PROVIDER "={provider}"); return -1; }
static void pscom_openib_init(FILE *peer) { psoib_info_msg_t lmsg, rmsg; int rc; pscom.env.debug = arg_verbose; pscom_env_get_int(&pscom.env.debug, ENV_DEBUG); psoib_debug = pscom.env.debug; pscom_env_get_str(&psoib_hca, ENV_OPENIB_HCA); pscom_env_get_uint(&psoib_port, ENV_OPENIB_PORT); pscom_env_get_uint(&psoib_path_mtu, ENV_OPENIB_PATH_MTU); pscom_env_get_uint(&psoib_sendq_size, ENV_OPENIB_SENDQ_SIZE); pscom_env_get_uint(&psoib_recvq_size, ENV_OPENIB_RECVQ_SIZE); pscom_env_get_uint(&psoib_compq_size, ENV_OPENIB_COMPQ_SIZE); psoib_pending_tokens = psoib_pending_tokens_suggestion(); pscom_env_get_uint(&psoib_pending_tokens, ENV_OPENIB_PENDING_TOKENS); rc = psoib_init(); psoib_rc_check("psoib_init()", rc); mcon = psoib_con_create(); assert(mcon); rc = psoib_con_init(mcon, NULL, NULL); psoib_rc_check("psoib_con_init()", rc); psoib_con_get_info_msg(mcon, &lmsg); if (is_client) { info_write(peer, &lmsg); info_read(peer, &rmsg); } else { info_read(peer, &rmsg); info_write(peer, &lmsg); } rc = psoib_con_connect(mcon, &rmsg); psoib_rc_check("psoib_con_connect()", rc); }
static void pscom_openib_init(void) { psoib_debug = pscom.env.debug; psoib_debug_stream = pscom_debug_stream(); pscom_env_get_str(&psoib_hca, ENV_OPENIB_HCA); pscom_env_get_uint(&psoib_port, ENV_OPENIB_PORT); pscom_env_get_uint(&psoib_path_mtu, ENV_OPENIB_PATH_MTU); pscom_env_get_uint(&psoib_recvq_size, ENV_OPENIB_RECVQ_SIZE); pscom_env_get_int(&psoib_global_sendq, ENV_OPENIB_GLOBAL_SENDQ); pscom_env_get_uint(&psoib_compq_size, ENV_OPENIB_COMPQ_SIZE); if (psoib_global_sendq) { // One sendq for all connection. limit sendq to compq size. psoib_sendq_size = psoib_compq_size; } else { // One sendq for each connection. limit sendq to recvq size. psoib_sendq_size = pscom_min(psoib_sendq_size, psoib_recvq_size); } pscom_env_get_uint(&psoib_sendq_size, ENV_OPENIB_SENDQ_SIZE); psoib_pending_tokens = psoib_pending_tokens_suggestion(); pscom_env_get_uint(&psoib_pending_tokens, ENV_OPENIB_PENDING_TOKENS); // if (!psoib_global_sendq && psoib_sendq_size == psoib_recvq_size) { // // Disable event counting: // psoib_event_count = 0; // } pscom_env_get_int(&psoib_event_count, ENV_OPENIB_EVENT_CNT); pscom_env_get_int(&psoib_ignore_wrong_opcodes, ENV_OPENIB_IGNORE_WRONG_OPCODES); pscom_env_get_int(&psoib_lid_offset, ENV_OPENIB_LID_OFFSET); INIT_LIST_HEAD(&pscom_cq_poll.next); pscom_cq_poll.do_read = pscom_poll_cq; }
void pscom_env_init(void) { pscom_pslib_read_config(ENV_CONFIG_FILES); pscom_debug_set_filename(pscom_env_get(ENV_DEBUG_OUT), 1); if (!pscom.env.debug) { // only set debug once! pscom_env_get_int(&pscom.env.debug, ENV_DEBUG); } if (pscom_pslib_available) { pscom_env_get_str(&pscom.env.info, ENV_INFO); if (pscom.env.info) pscom_info_connect(pscom.env.info); } DPRINT(1,"# Version(PSCOM): %s (%s)", __DATE__, VC_VERSION); pscom_env_get_uint(&pscom.env.so_sndbuf, ENV_SO_SNDBUF); pscom_env_get_uint(&pscom.env.so_rcvbuf, ENV_SO_RCVBUF); pscom_env_get_int(&pscom.env.tcp_nodelay, ENV_TCP_NODELAY); pscom_env_get_uint(&pscom.env.tcp_backlog, ENV_TCP_BACKLOG); // pscom_env_get_int(&env.nobgthread, ENV_NOBGTHREAD); pscom_env_get_int(&pscom.env.sched_yield, ENV_SCHED_YIELD); pscom_env_get_int(&pscom.env.unexpected_receives, ENV_UNEXPECTED_RECEIVES); pscom_env_get_uint(&pscom.env.rendezvous_size, ENV_RENDEZVOUS); if (pscom.env.rendezvous_size != (unsigned)~0) pscom.env.rendezvous_size_shm = pscom.env.rendezvous_size; pscom_env_get_uint(&pscom.env.rendezvous_size_shm, ENV_RENDEZVOUS_SHM); if (pscom.env.rendezvous_size != (unsigned)~0) pscom.env.rendezvous_size_dapl = pscom.env.rendezvous_size; pscom_env_get_uint(&pscom.env.rendezvous_size_dapl, ENV_RENDEZVOUS_DAPL); if (pscom.env.rendezvous_size != (unsigned)~0) pscom.env.rendezvous_size_elan = pscom.env.rendezvous_size; pscom_env_get_uint(&pscom.env.rendezvous_size_elan, ENV_RENDEZVOUS_ELAN); if (pscom.env.rendezvous_size != (unsigned)~0) pscom.env.rendezvous_size_extoll = pscom.env.rendezvous_size; pscom_env_get_uint(&pscom.env.rendezvous_size_extoll, ENV_RENDEZVOUS_EXTOLL); if (pscom.env.rendezvous_size != (unsigned)~0) pscom.env.rendezvous_size_velo = pscom.env.rendezvous_size; pscom_env_get_uint(&pscom.env.rendezvous_size_velo, ENV_RENDEZVOUS_VELO); if (pscom.env.rendezvous_size != (unsigned)~0) pscom.env.rendezvous_size_openib = pscom.env.rendezvous_size; pscom_env_get_uint(&pscom.env.rendezvous_size_openib, ENV_RENDEZVOUS_OPENIB); pscom_env_get_int(&pscom.env.sigquit, ENV_SIGQUIT); pscom_env_get_uint(&pscom.env.readahead, ENV_READAHEAD); pscom_env_get_uint(&pscom.env.retry, ENV_RETRY); pscom.env.readahead = pscom_max(pscom.env.readahead, sizeof(pscom_header_net_t)); pscom_env_get_str(&pscom.env.network, ENV_NETWORK); pscom_env_get_dir(&pscom.env.plugindir, ENV_PLUGINDIR); pscom_env_get_int(&pscom.env.debug_req, ENV_DEBUG_REQ); if (pscom.env.debug >= 2) pscom.env.debug_stats = 1; pscom_env_get_int(&pscom.env.debug_stats, ENV_DEBUG_STATS); pscom_env_get_uint(&pscom.env.iprobe_count, ENV_IPROBE_COUNT); }