static int rte_finalize(void) { int ret; /* remove the envars that we pushed into environ * so we leave that structure intact */ if (added_transport_keys) { unsetenv(OPAL_MCA_PREFIX"orte_precondition_transports"); } if (added_num_procs) { unsetenv(OPAL_MCA_PREFIX"orte_ess_num_procs"); } if (added_app_ctx) { unsetenv("OMPI_APP_CTX_NUM_PROCS"); } /* use the default app procedure to finish */ if (ORTE_SUCCESS != (ret = orte_ess_base_app_finalize())) { ORTE_ERROR_LOG(ret); return ret; } /* release the event base */ if (progress_thread_running) { opal_progress_thread_finalize(NULL); progress_thread_running = false; } return ORTE_SUCCESS; }
int orte_ess_base_app_finalize(void) { orte_cr_finalize(); #if OPAL_ENABLE_FT_CR == 1 (void) mca_base_framework_close(&orte_snapc_base_framework); (void) mca_base_framework_close(&orte_sstore_base_framework); #endif /* close frameworks */ (void) mca_base_framework_close(&orte_filem_base_framework); (void) mca_base_framework_close(&orte_errmgr_base_framework); /* now can close the rml and its friendly group comm */ (void) mca_base_framework_close(&orte_grpcomm_base_framework); (void) mca_base_framework_close(&orte_dfs_base_framework); (void) mca_base_framework_close(&orte_routed_base_framework); (void) mca_base_framework_close(&orte_rml_base_framework); (void) mca_base_framework_close(&orte_oob_base_framework); (void) mca_base_framework_close(&orte_state_base_framework); orte_session_dir_finalize(ORTE_PROC_MY_NAME); /* release the event base */ if (progress_thread_running) { opal_progress_thread_finalize(NULL); progress_thread_running = false; } return ORTE_SUCCESS; }
static int orcm_pvsn_base_close(void) { if (orcm_pvsn_base.ev_active) { orcm_pvsn_base.ev_active = false; /* stop the thread */ opal_progress_thread_finalize("pvsn"); } return mca_base_framework_components_close(&orcm_pvsn_base_framework, NULL); }
static int orcm_evgen_base_close(void) { if (NULL != orcm_evgen_evbase) { opal_progress_thread_finalize("evgen"); } OPAL_LIST_DESTRUCT(&orcm_evgen_base.actives); /* Close all remaining available components */ return mca_base_framework_components_close(&orcm_evgen_base_framework, NULL); }
static int rte_finalize(void) { int ret; /* remove the envars that we pushed into environ * so we leave that structure intact */ if (added_transport_keys) { unsetenv(OPAL_MCA_PREFIX"orte_precondition_transports"); } if (added_num_procs) { unsetenv(OPAL_MCA_PREFIX"orte_ess_num_procs"); } if (added_app_ctx) { unsetenv("OMPI_APP_CTX_NUM_PROCS"); } if (added_pmix_envs) { unsetenv("PMIX_NAMESPACE"); unsetenv("PMIX_RANK"); unsetenv("PMIX_SERVER_URI"); unsetenv("PMIX_SECURITY_MODE"); } /* use the default procedure to finish */ if (ORTE_SUCCESS != (ret = orte_ess_base_app_finalize())) { ORTE_ERROR_LOG(ret); } /* mark us as finalized */ if (NULL != opal_pmix.finalize) { opal_pmix.finalize(); (void) mca_base_framework_close(&opal_pmix_base_framework); } /* release the event base */ if (progress_thread_running) { opal_progress_thread_finalize(NULL); progress_thread_running = false; } return ret; }
static int orcm_scd_base_close(void) { int i; hwloc_topology_t t; orcm_node_t *node; /* stop the thread */ opal_progress_thread_finalize("scd"); /* deconstruct the base objects */ OPAL_LIST_DESTRUCT(&orcm_scd_base.states); OPAL_LIST_DESTRUCT(&orcm_scd_base.rmstates); OPAL_LIST_DESTRUCT(&orcm_scd_base.queues); OPAL_LIST_DESTRUCT(&orcm_scd_base.tracking); for (i = 0; i < orcm_scd_base.topologies.size; i++) { if (NULL != (t = (hwloc_topology_t)opal_pointer_array_get_item(&orcm_scd_base.topologies, i))) { hwloc_topology_destroy(t); } } OBJ_DESTRUCT(&orcm_scd_base.topologies); for (i = 0; i < orcm_scd_base.nodes.size; i++) { if (NULL != (node = (orcm_node_t*)opal_pointer_array_get_item(&orcm_scd_base.nodes, i))) { OBJ_RELEASE(node); } } OBJ_DESTRUCT(&orcm_scd_base.nodes); /* give the selected plugin a chance to finalize */ if (NULL != orcm_scd_base.module->finalize) { orcm_scd_base.module->finalize(); } /* finalize the resource management service */ scd_base_rm_finalize(); return mca_base_framework_components_close(&orcm_scd_base_framework, NULL); }
static int native_fini(void) { opal_buffer_t *msg; pmix_cb_t *cb; pmix_cmd_t cmd = PMIX_FINALIZE_CMD; int rc; if (1 != init_cntr) { --init_cntr; return OPAL_SUCCESS; } init_cntr = 0; opal_output_verbose(2, opal_pmix_base_framework.framework_output, "%s pmix:native finalize called", OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); if (NULL == mca_pmix_native_component.uri) { /* nothing was setup, so return */ return OPAL_SUCCESS; } if (PMIX_USOCK_CONNECTED == mca_pmix_native_component.state) { /* setup a cmd message to notify the PMIx * server that we are normally terminating */ msg = OBJ_NEW(opal_buffer_t); /* pack the cmd */ if (OPAL_SUCCESS != (rc = opal_dss.pack(msg, &cmd, 1, PMIX_CMD_T))) { OPAL_ERROR_LOG(rc); OBJ_RELEASE(msg); return rc; } /* create a callback object as we need to pass it to the * recv routine so we know which callback to use when * the return message is recvd */ cb = OBJ_NEW(pmix_cb_t); cb->active = true; opal_output_verbose(2, opal_pmix_base_framework.framework_output, "%s pmix:native sending finalize sync to server", OPAL_NAME_PRINT(OPAL_PROC_MY_NAME)); /* push the message into our event base to send to the server */ PMIX_ACTIVATE_SEND_RECV(msg, wait_cbfunc, cb); /* wait for the ack to return */ PMIX_WAIT_FOR_COMPLETION(cb->active); OBJ_RELEASE(cb); } if (NULL != mca_pmix_native_component.evbase) { opal_progress_thread_finalize(NULL); mca_pmix_native_component.evbase = NULL; } if (0 <= mca_pmix_native_component.sd) { CLOSE_THE_SOCKET(mca_pmix_native_component.sd); } return OPAL_SUCCESS; }