int orte_ess_base_tool_finalize(void) { orte_wait_finalize(); #if OPAL_ENABLE_FT_CR == 1 mca_base_framework_close(&orte_snapc_base_framework); mca_base_framework_close(&orte_sstore_base_framework); #endif /* if I am a tool, then all I will have done is * a very small subset of orte_init - ensure that * I only back those elements out */ if (NULL != orte_process_info.my_hnp_uri) { (void) mca_base_framework_close(&orte_iof_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_schizo_base_framework); (void) mca_base_framework_close(&orte_errmgr_base_framework); /* release the event base */ if (progress_thread_running) { opal_stop_progress_thread("orte", true); 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(&opal_dstore_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_stop_progress_thread("opal_async", true); progress_thread_running = false; } return ORTE_SUCCESS; }
int orte_ess_base_app_finalize(void) { orte_cr_finalize(); /* release the event base so we stop all potential * race conditions in the messaging teardown */ if (progress_thread_running) { opal_stop_progress_thread("orte", false); progress_thread_running = false; } #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(&opal_dstore_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); /* free the event base to cleanup memory */ opal_stop_progress_thread("orte", true); return ORTE_SUCCESS; }
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_stop_progress_thread("opal_async", true); mca_pmix_native_component.evbase = NULL; } if (0 <= mca_pmix_native_component.sd) { CLOSE_THE_SOCKET(mca_pmix_native_component.sd); } return OPAL_SUCCESS; }