/* * Initialize events to be used by the peer instance for USOCK select/poll callbacks. */ void pmix_server_peer_event_init(pmix_server_peer_t* peer) { if (peer->sd >= 0) { opal_event_set(orte_event_base, &peer->recv_event, peer->sd, OPAL_EV_READ|OPAL_EV_PERSIST, pmix_server_recv_handler, peer); opal_event_set_priority(&peer->recv_event, ORTE_MSG_PRI); if (peer->recv_ev_active) { opal_event_del(&peer->recv_event); peer->recv_ev_active = false; } opal_event_set(orte_event_base, &peer->send_event, peer->sd, OPAL_EV_WRITE|OPAL_EV_PERSIST, pmix_server_send_handler, peer); opal_event_set_priority(&peer->send_event, ORTE_MSG_PRI); if (peer->send_ev_active) { opal_event_del(&peer->send_event); peer->send_ev_active = false; } } }
int orte_ess_base_orted_finalize(void) { /* stop the local sensors */ orte_sensor.stop(ORTE_PROC_MY_NAME->jobid); if (signals_set) { /* Release all local signal handlers */ opal_event_del(&epipe_handler); opal_event_del(&term_handler); opal_event_del(&int_handler); #ifndef __WINDOWS__ opal_event_signal_del(&sigusr1_handler); opal_event_signal_del(&sigusr2_handler); #endif /* __WINDOWS__ */ } /* cleanup */ if (NULL != log_path) { unlink(log_path); } /* make sure our local procs are dead */ orte_odls.kill_local_procs(NULL); /* cleanup any lingering session directories */ orte_session_dir_cleanup(ORTE_JOBID_WILDCARD); return ORTE_SUCCESS; }
static int mca_btl_tcp_component_close(void) { opal_list_item_t* item; opal_list_item_t* next; if(NULL != mca_btl_tcp_component.tcp_if_include) { free(mca_btl_tcp_component.tcp_if_include); mca_btl_tcp_component.tcp_if_include = NULL; } if(NULL != mca_btl_tcp_component.tcp_if_exclude) { free(mca_btl_tcp_component.tcp_if_exclude); mca_btl_tcp_component.tcp_if_exclude = NULL; } if (NULL != mca_btl_tcp_component.tcp_if_seq) { free(mca_btl_tcp_component.tcp_if_seq); } if (NULL != mca_btl_tcp_component.tcp_btls) free(mca_btl_tcp_component.tcp_btls); if (mca_btl_tcp_component.tcp_listen_sd >= 0) { opal_event_del(&mca_btl_tcp_component.tcp_recv_event); CLOSE_THE_SOCKET(mca_btl_tcp_component.tcp_listen_sd); mca_btl_tcp_component.tcp_listen_sd = -1; } #if OPAL_WANT_IPV6 if (mca_btl_tcp_component.tcp6_listen_sd >= 0) { opal_event_del(&mca_btl_tcp_component.tcp6_recv_event); CLOSE_THE_SOCKET(mca_btl_tcp_component.tcp6_listen_sd); mca_btl_tcp_component.tcp6_listen_sd = -1; } #endif /* cleanup any pending events */ OPAL_THREAD_LOCK(&mca_btl_tcp_component.tcp_lock); for(item = opal_list_get_first(&mca_btl_tcp_component.tcp_events); item != opal_list_get_end(&mca_btl_tcp_component.tcp_events); item = next) { mca_btl_tcp_event_t* event = (mca_btl_tcp_event_t*)item; next = opal_list_get_next(item); opal_event_del(&event->event); OBJ_RELEASE(event); } OPAL_THREAD_UNLOCK(&mca_btl_tcp_component.tcp_lock); /* release resources */ OBJ_DESTRUCT(&mca_btl_tcp_component.tcp_procs); OBJ_DESTRUCT(&mca_btl_tcp_component.tcp_events); OBJ_DESTRUCT(&mca_btl_tcp_component.tcp_frag_eager); OBJ_DESTRUCT(&mca_btl_tcp_component.tcp_frag_max); OBJ_DESTRUCT(&mca_btl_tcp_component.tcp_frag_user); OBJ_DESTRUCT(&mca_btl_tcp_component.tcp_lock); #ifdef __WINDOWS__ WSACleanup(); #endif return OMPI_SUCCESS; }
int mca_btl_sctp_component_close(void) { opal_list_item_t* item; opal_list_item_t* next; if(NULL != mca_btl_sctp_component.sctp_if_include) { free(mca_btl_sctp_component.sctp_if_include); } if(NULL != mca_btl_sctp_component.sctp_if_exclude) { free(mca_btl_sctp_component.sctp_if_exclude); } if (NULL != mca_btl_sctp_component.sctp_btls) { free(mca_btl_sctp_component.sctp_btls); } mca_btl_sctp_recv_handler_freebuf(); if (mca_btl_sctp_component.sctp_listen_sd >= 0) { opal_event_del(&mca_btl_sctp_component.sctp_recv_event); CLOSE_THE_SOCKET(mca_btl_sctp_component.sctp_listen_sd); mca_btl_sctp_component.sctp_listen_sd = -1; } /* cleanup any pending events */ OPAL_THREAD_LOCK(&mca_btl_sctp_component.sctp_lock); for(item = opal_list_get_first(&mca_btl_sctp_component.sctp_events); item != opal_list_get_end(&mca_btl_sctp_component.sctp_events); item = next) { mca_btl_sctp_event_t* event = (mca_btl_sctp_event_t*)item; next = opal_list_get_next(item); opal_event_del(&event->event); OBJ_RELEASE(event); } OPAL_THREAD_UNLOCK(&mca_btl_sctp_component.sctp_lock); /* release resources */ OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_procs); #if MCA_BTL_SCTP_DONT_USE_HASH if(NULL != recvr_proc_table) { free(recvr_proc_table); } if(NULL != sender_proc_table) { free(sender_proc_table); } #else OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_assocID_hash); #endif OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_events); OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_frag_eager); OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_frag_max); OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_frag_user); OBJ_DESTRUCT(&mca_btl_sctp_component.sctp_lock); #ifdef __WINDOWS__ WSACleanup(); #endif return OMPI_SUCCESS; }
void bufferevent_free(struct bufferevent *bufev) { opal_event_del(&bufev->ev_read); opal_event_del(&bufev->ev_write); evbuffer_free(bufev->input); evbuffer_free(bufev->output); free(bufev); }
static void orcmd_finalize(void) { /* stop the local sensors */ orcm_sensor.stop(ORTE_PROC_MY_NAME->jobid); (void) mca_base_framework_close(&orcm_sensor_base_framework); (void) mca_base_framework_close(&opal_pstat_base_framework); (void) mca_base_framework_close(&orcm_analytics_base_framework); if (signals_set) { /* Release all local signal handlers */ opal_event_del(&epipe_handler); opal_event_del(&term_handler); opal_event_del(&int_handler); opal_event_signal_del(&sigusr1_handler); opal_event_signal_del(&sigusr2_handler); } /* cleanup */ if (NULL != log_path) { unlink(log_path); } /* close frameworks */ (void) mca_base_framework_close(&orcm_diag_base_framework); (void) mca_base_framework_close(&orte_filem_base_framework); (void) mca_base_framework_close(&orte_grpcomm_base_framework); (void) mca_base_framework_close(&orte_iof_base_framework); (void) mca_base_framework_close(&orte_notifier_base_framework); (void) mca_base_framework_close(&orte_errmgr_base_framework); (void) mca_base_framework_close(&orte_plm_base_framework); /* close the dfs so its threads can exit */ (void) mca_base_framework_close(&orte_dfs_base_framework); /* make sure our local procs are dead */ orte_odls.kill_local_procs(NULL); (void) mca_base_framework_close(&orte_odls_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); (void) mca_base_framework_close(&orcm_db_base_framework); (void) mca_base_framework_close(&opal_dstore_base_framework); (void) mca_base_framework_close(&orcm_evgen_base_framework); /* cleanup any lingering session directories */ orte_session_dir_cleanup(ORTE_JOBID_WILDCARD); }
int bufferevent_disable(struct bufferevent *bufev, short event) { if (event & OPAL_EV_READ) { if (opal_event_del(&bufev->ev_read) == -1) return (-1); } if (event & OPAL_EV_WRITE) { if (opal_event_del(&bufev->ev_write) == -1) return (-1); } bufev->enabled &= ~event; return (0); }
void orte_iof_base_endpoint_closed(orte_iof_base_endpoint_t* endpoint) { /* For sinks: discard any fragments that were waiting to be written down the fd (because the process on the other side of the fd is no longer there -- we're just about to close the fd). */ if (ORTE_IOF_SINK == endpoint->ep_mode) { while (NULL != opal_list_remove_first(&(endpoint->ep_sink_frags))) { continue; } /* Upper layer will take care of signaling any waiting condition variable -- no need to do it here */ } /* Special case: if we're a sink and one of the special streams (stdout or stderr), don't close anything because we don't want to *actually* close stdout or stderr just because a remote process closes theirs (but we do if a remote source/stdin closes theirs, for example). */ if (ORTE_IOF_SINK == endpoint->ep_mode && (ORTE_IOF_STDOUT == endpoint->ep_tag || ORTE_IOF_STDERR == endpoint->ep_tag)) { return; } /* remove any event handlers */ opal_event_del(&endpoint->ep_event); /* close associated file descriptor */ close(endpoint->ep_fd); endpoint->ep_fd = -1; }
static void stop(orte_jobid_t jobid) { opal_list_item_t *item; file_tracker_t *ft; /* cannot monitor my own job */ if (jobid == ORTE_PROC_MY_NAME->jobid && ORTE_JOBID_WILDCARD != jobid) { return; } for (item = opal_list_get_first(&jobs); item != opal_list_get_end(&jobs); item = opal_list_get_next(item)) { ft = (file_tracker_t*)item; if (jobid == ft->jobid || ORTE_JOBID_WILDCARD == jobid) { opal_list_remove_item(&jobs, item); OBJ_RELEASE(item); } } /* if no jobs remain, stop the sampling */ if (opal_list_is_empty(&jobs) && NULL != sample_ev) { opal_event_del(sample_ev); free(sample_ev); sample_ev = NULL; } return; }
static void orte_state_caddy_destruct(orte_state_caddy_t *caddy) { opal_event_del(&caddy->ev); if (NULL != caddy->jdata) { OBJ_RELEASE(caddy->jdata); } }
/* * Setup peer state to reflect that connection has been established, * and start any pending sends. */ void pmix_server_peer_connected(pmix_server_peer_t* peer) { opal_output_verbose(2, pmix_server_output, "%s-%s usock_peer_connected on socket %d", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), ORTE_NAME_PRINT(&(peer->name)), peer->sd); if (peer->timer_ev_active) { opal_event_del(&peer->timer_event); peer->timer_ev_active = false; } peer->state = PMIX_SERVER_CONNECTED; /* ensure the recv event is active */ if (!peer->recv_ev_active) { opal_event_add(&peer->recv_event, 0); peer->recv_ev_active = true; } /* initiate send of first message on queue */ if (NULL == peer->send_msg) { peer->send_msg = (pmix_server_send_t*) opal_list_remove_first(&peer->send_queue); } if (NULL != peer->send_msg && !peer->send_ev_active) { opal_event_add(&peer->send_event, 0); peer->send_ev_active = true; } }
/* * Check the status of the connection. If the connection failed, will retry * later. Otherwise, send this processes identifier to the peer on the * newly connected socket. */ static void mca_oob_tcp_peer_complete_connect(mca_oob_tcp_peer_t* peer) { int so_error = 0; opal_socklen_t so_length = sizeof(so_error); /* unregister from receiving event notifications */ opal_event_del(&peer->peer_send_event); /* check connect completion status */ if(getsockopt(peer->peer_sd, SOL_SOCKET, SO_ERROR, (char *)&so_error, &so_length) < 0) { opal_output(0, "[%lu,%lu,%lu]-[%lu,%lu,%lu] mca_oob_tcp_peer_complete_connect: getsockopt() failed: %s (%d)\n", ORTE_NAME_ARGS(orte_process_info.my_name), ORTE_NAME_ARGS(&(peer->peer_name)), strerror(opal_socket_errno), opal_socket_errno); mca_oob_tcp_peer_close(peer); return; } if(so_error == EINPROGRESS) { opal_event_add(&peer->peer_send_event, 0); return; } else if (so_error == ECONNREFUSED || so_error == ETIMEDOUT) { struct timeval tv = { 1,0 }; if (mca_oob_tcp_component.tcp_debug >= OOB_TCP_DEBUG_CONNECT) { opal_output(0, "[%lu,%lu,%lu]-[%lu,%lu,%lu] mca_oob_tcp_peer_complete_connect: " "connection failed: %s (%d) - retrying\n", ORTE_NAME_ARGS(orte_process_info.my_name), ORTE_NAME_ARGS(&(peer->peer_name)), strerror(so_error), so_error); } mca_oob_tcp_peer_shutdown(peer); opal_evtimer_add(&peer->peer_timer_event, &tv); return; } else if(so_error != 0) { /* No need to worry about the return code here - we return regardless at this point, and if an error did occur a message has already been printed for the user */ mca_oob_tcp_peer_try_connect(peer); return; } if(mca_oob_tcp_component.tcp_debug >= OOB_TCP_DEBUG_CONNECT) { opal_output(0, "[%lu,%lu,%lu]-[%lu,%lu,%lu] mca_oob_tcp_peer_complete_connect: " "sending ack, %d", ORTE_NAME_ARGS(orte_process_info.my_name), ORTE_NAME_ARGS(&(peer->peer_name)), so_error); } if(mca_oob_tcp_peer_send_connect_ack(peer) == ORTE_SUCCESS) { peer->peer_state = MCA_OOB_TCP_CONNECT_ACK; opal_event_add(&peer->peer_recv_event, 0); } else { opal_output(0, "[%lu,%lu,%lu]-[%lu,%lu,%lu] mca_oob_tcp_peer_complete_connect: unable to send connect ack.", ORTE_NAME_ARGS(orte_process_info.my_name), ORTE_NAME_ARGS(&(peer->peer_name))); mca_oob_tcp_peer_close(peer); } }
void orte_sensor_base_stop(orte_jobid_t job) { orte_sensor_active_module_t *i_module; int i; if (!mods_active) { return; } opal_output_verbose(5, orte_sensor_base.output, "%s sensor:base: stopping sensors", ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)); if (orte_sensor_base.active) { opal_event_del(&orte_sensor_base.sample_ev); orte_sensor_base.active = false; } /* call the stop function of all modules in priority order */ for (i=0; i < orte_sensor_base.modules.size; i++) { if (NULL == (i_module = (orte_sensor_active_module_t*)opal_pointer_array_get_item(&orte_sensor_base.modules, i))) { continue; } if (NULL != i_module->module->stop) { i_module->module->stop(job); } } return; }
static void* progress_engine(opal_object_t *obj) { /* define an event that will be used to kick us out of a blocking * situation when we want to exit */ /* define an event that will be used to kick us out of a blocking * situation when we want to exit */ opal_event_set(my_base, &stop_event, progress_thread_pipe[0], OPAL_EV_READ, stop_handler, NULL); opal_event_add(&stop_event, 0); while (1) { OPAL_ACQUIRE_THREAD(&lock, &cond, &active); if (progress_thread_stop) { fprintf(stderr, "Thread stopping\n"); OPAL_RELEASE_THREAD(&lock, &cond, &active); opal_event_del(&stop_event); return OPAL_THREAD_CANCELLED; } OPAL_RELEASE_THREAD(&lock, &cond, &active); fprintf(stderr, "Looping...\n"); opal_event_loop(my_base, OPAL_EVLOOP_ONCE); } }
/* * Remove any event registrations associated with the socket * and update the endpoint state to reflect the connection has * been closed. */ void mca_btl_tcp2_endpoint_close(mca_btl_base_endpoint_t* btl_endpoint) { if(btl_endpoint->endpoint_sd < 0) return; btl_endpoint->endpoint_state = MCA_BTL_TCP_CLOSED; btl_endpoint->endpoint_retries++; opal_event_del(&btl_endpoint->endpoint_recv_event); opal_event_del(&btl_endpoint->endpoint_send_event); CLOSE_THE_SOCKET(btl_endpoint->endpoint_sd); btl_endpoint->endpoint_sd = -1; #if MCA_BTL_TCP_ENDPOINT_CACHE free( btl_endpoint->endpoint_cache ); btl_endpoint->endpoint_cache = NULL; btl_endpoint->endpoint_cache_pos = NULL; btl_endpoint->endpoint_cache_length = 0; #endif /* MCA_BTL_TCP_ENDPOINT_CACHE */ }
int orte_ess_base_orted_finalize(void) { if (signals_set) { /* Release all local signal handlers */ opal_event_del(&epipe_handler); opal_event_del(&term_handler); opal_event_del(&int_handler); opal_event_signal_del(&sigusr1_handler); opal_event_signal_del(&sigusr2_handler); } /* cleanup */ if (NULL != log_path) { unlink(log_path); } /* shutdown the pmix server */ pmix_server_finalize(); (void) mca_base_framework_close(&opal_pmix_base_framework); /* release the conduits */ orte_rml.close_conduit(orte_mgmt_conduit); orte_rml.close_conduit(orte_coll_conduit); /* close frameworks */ (void) mca_base_framework_close(&orte_filem_base_framework); (void) mca_base_framework_close(&orte_grpcomm_base_framework); (void) mca_base_framework_close(&orte_iof_base_framework); (void) mca_base_framework_close(&orte_errmgr_base_framework); (void) mca_base_framework_close(&orte_plm_base_framework); /* close the dfs so its threads can exit */ (void) mca_base_framework_close(&orte_dfs_base_framework); /* make sure our local procs are dead */ orte_odls.kill_local_procs(NULL); (void) mca_base_framework_close(&orte_rtc_base_framework); (void) mca_base_framework_close(&orte_odls_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); /* remove our use of the session directory tree */ orte_session_dir_finalize(ORTE_PROC_MY_NAME); /* ensure we scrub the session directory tree */ orte_session_dir_cleanup(ORTE_JOBID_WILDCARD); /* release the job hash table */ OBJ_RELEASE(orte_job_data); return ORTE_SUCCESS; }
static void orte_iof_base_endpoint_destruct(orte_iof_base_endpoint_t* endpoint) { if(endpoint->ep_fd >= 0) { opal_event_del(&endpoint->ep_event); } OBJ_DESTRUCT(&endpoint->ep_source_frags); OBJ_DESTRUCT(&endpoint->ep_sink_frags); OBJ_DESTRUCT(&endpoint->ep_callbacks); }
static void stop(orte_jobid_t jobid) { if (NULL != sample_ev) { opal_event_del(sample_ev); free(sample_ev); sample_ev = NULL; } return; }
static void process_release(int fd, short flag, void *data) { /* delete our local event */ opal_event_del(&rel_ev); close(rel_pipe[0]); close(rel_pipe[1]); orcm_finalize(); exit(0); }
static void finalize(void) { orte_rml.recv_cancel(ORTE_NAME_WILDCARD, ORTE_RML_TAG_HEARTBEAT); if (check_active) { opal_event_del(&check_ev); check_active = false; } return; }
static void mca_btl_tcp2_endpoint_send_handler(int sd, short flags, void* user) { mca_btl_tcp2_endpoint_t* btl_endpoint = (mca_btl_tcp2_endpoint_t *)user; OPAL_THREAD_LOCK(&btl_endpoint->endpoint_send_lock); switch(btl_endpoint->endpoint_state) { case MCA_BTL_TCP_CONNECTING: mca_btl_tcp2_endpoint_complete_connect(btl_endpoint); break; case MCA_BTL_TCP_CONNECTED: /* complete the current send */ while (NULL != btl_endpoint->endpoint_send_frag) { mca_btl_tcp2_frag_t* frag = btl_endpoint->endpoint_send_frag; int btl_ownership = (frag->base.des_flags & MCA_BTL_DES_FLAGS_BTL_OWNERSHIP); if(mca_btl_tcp2_frag_send(frag, btl_endpoint->endpoint_sd) == false) { break; } /* progress any pending sends */ btl_endpoint->endpoint_send_frag = (mca_btl_tcp2_frag_t*) opal_list_remove_first(&btl_endpoint->endpoint_frags); /* if required - update request status and release fragment */ OPAL_THREAD_UNLOCK(&btl_endpoint->endpoint_send_lock); assert( frag->base.des_flags & MCA_BTL_DES_SEND_ALWAYS_CALLBACK ); frag->base.des_cbfunc(&frag->btl->super, frag->endpoint, &frag->base, frag->rc); if( btl_ownership ) { MCA_BTL_TCP_FRAG_RETURN(frag); } OPAL_THREAD_LOCK(&btl_endpoint->endpoint_send_lock); } /* if nothing else to do unregister for send event notifications */ if(NULL == btl_endpoint->endpoint_send_frag) { opal_event_del(&btl_endpoint->endpoint_send_event); } break; default: BTL_ERROR(("invalid connection state (%d)", btl_endpoint->endpoint_state)); opal_event_del(&btl_endpoint->endpoint_send_event); break; } OPAL_THREAD_UNLOCK(&btl_endpoint->endpoint_send_lock); }
static void finalize(void) { if (NULL != sample_ev) { opal_event_del(sample_ev); free(sample_ev); sample_ev = NULL; } return; }
static void send_handler(int sd, short flags, void *arg) { foo_caddy_t *foo = (foo_caddy_t*)arg; fprintf(stderr, "Deleting event\n"); opal_event_del(&foo->write_event); OBJ_RELEASE(foo); fprintf(stderr, "Write event fired\n"); fd_written = true; /* This needs a lock around it if you are reading it * in the main thread and changing it here XXX */ }
void mca_oob_tcp_peer_shutdown(mca_oob_tcp_peer_t* peer) { /* giving up and cleanup any pending messages */ if(peer->peer_retries++ > mca_oob_tcp_component.tcp_peer_retries) { mca_oob_tcp_msg_t *msg; opal_output(0, "[%lu,%lu,%lu]-[%lu,%lu,%lu] mca_oob_tcp_peer_shutdown: retries exceeded", ORTE_NAME_ARGS(orte_process_info.my_name), ORTE_NAME_ARGS(&(peer->peer_name))); /* There are cases during the initial connection setup where the peer_send_msg is NULL but there are things in the queue -- handle that case */ if (NULL != (msg = peer->peer_send_msg)) { msg->msg_complete = true; msg->msg_rc = ORTE_ERR_UNREACH; mca_oob_tcp_msg_complete(msg, &peer->peer_name); } peer->peer_send_msg = NULL; while (NULL != (msg = (mca_oob_tcp_msg_t*)opal_list_remove_first(&peer->peer_send_queue))) { msg->msg_complete = true; msg->msg_rc = ORTE_ERR_UNREACH; mca_oob_tcp_msg_complete(msg, &peer->peer_name); } /* We were unsuccessful in establishing a connection, and are not likely to suddenly become successful, so abort the whole thing */ peer->peer_state = MCA_OOB_TCP_FAILED; } if (peer->peer_sd >= 0) { opal_event_del(&peer->peer_recv_event); opal_event_del(&peer->peer_send_event); CLOSE_THE_SOCKET(peer->peer_sd); peer->peer_sd = -1; } opal_event_del(&peer->peer_timer_event); peer->peer_state = MCA_OOB_TCP_CLOSED; }
/* * Finalize usnic module statistics */ int opal_btl_usnic_stats_finalize(opal_btl_usnic_module_t *module) { /* Disable the stats callback event, and then call the stats callback manually to display the final stats */ if (mca_btl_usnic_component.stats_enabled) { opal_event_del(&(module->stats.timer_event)); opal_btl_usnic_print_stats(module, "final", /*reset_stats=*/false); } return OPAL_SUCCESS; }
/* * Remove any event registrations associated with the socket * and update the endpoint state to reflect the connection has * been closed. */ void mca_btl_tcp2_endpoint_close(mca_btl_base_endpoint_t* btl_endpoint) { int sd = btl_endpoint->endpoint_sd; do { if( sd < 0 ) return; } while ( opal_atomic_cmpset( &(btl_endpoint->endpoint_sd), sd, -1 ) ); CLOSE_THE_SOCKET(sd); btl_endpoint->endpoint_retries++; opal_event_del(&btl_endpoint->endpoint_recv_event); opal_event_del(&btl_endpoint->endpoint_send_event); #if MCA_BTL_TCP_ENDPOINT_CACHE if( NULL != btl_endpoint->endpoint_cache ) free( btl_endpoint->endpoint_cache ); btl_endpoint->endpoint_cache = NULL; btl_endpoint->endpoint_cache_pos = NULL; btl_endpoint->endpoint_cache_length = 0; #endif /* MCA_BTL_TCP_ENDPOINT_CACHE */ }
void mca_oob_ud_event_stop_monitor (mca_oob_ud_device_t *device) { if (event_started) { #if !ORTE_ENABLE_PROGRESS_THREADS opal_progress_event_users_decrement (); #endif opal_event_del (&device->event); mca_oob_ud_stop_events (device); event_started = false; } }
static void orte_iof_base_endpoint_stdin_cb(int sd, short flags, void *user) { orte_iof_base_endpoint_t* endpoint = (orte_iof_base_endpoint_t*)user; bool should_process = orte_iof_base_endpoint_stdin_check(endpoint->ep_fd); if (should_process) { opal_event_add(&endpoint->ep_event, 0); } else { opal_event_del(&endpoint->ep_event); } }
int orte_ess_base_orted_finalize(void) { if (signals_set) { /* Release all local signal handlers */ opal_event_del(&epipe_handler); opal_event_del(&term_handler); opal_event_del(&int_handler); opal_event_signal_del(&sigusr1_handler); opal_event_signal_del(&sigusr2_handler); } /* cleanup */ if (NULL != log_path) { unlink(log_path); } /* close frameworks */ (void) mca_base_framework_close(&orte_filem_base_framework); (void) mca_base_framework_close(&orte_grpcomm_base_framework); (void) mca_base_framework_close(&orte_iof_base_framework); (void) mca_base_framework_close(&orte_errmgr_base_framework); (void) mca_base_framework_close(&orte_plm_base_framework); /* close the dfs so its threads can exit */ (void) mca_base_framework_close(&orte_dfs_base_framework); /* make sure our local procs are dead */ orte_odls.kill_local_procs(NULL); (void) mca_base_framework_close(&orte_odls_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); (void) mca_base_framework_close(&opal_db_base_framework); /* cleanup any lingering session directories */ orte_session_dir_cleanup(ORTE_JOBID_WILDCARD); return ORTE_SUCCESS; }
/* * A file descriptor is available/ready for send. Check the state * of the socket and take the appropriate action. */ static void mca_oob_tcp_peer_send_handler(int sd, short flags, void* user) { mca_oob_tcp_peer_t* peer = (mca_oob_tcp_peer_t *)user; OPAL_THREAD_LOCK(&peer->peer_lock); switch(peer->peer_state) { case MCA_OOB_TCP_CONNECTING: mca_oob_tcp_peer_complete_connect(peer); break; case MCA_OOB_TCP_CONNECTED: { while(peer->peer_send_msg != NULL) { /* complete the current send */ mca_oob_tcp_msg_t* msg = peer->peer_send_msg; if(mca_oob_tcp_msg_send_handler(msg, peer)) { mca_oob_tcp_msg_complete(msg, &peer->peer_name); } else { break; } /* if current completed - progress any pending sends */ peer->peer_send_msg = (mca_oob_tcp_msg_t*) opal_list_remove_first(&peer->peer_send_queue); } /* if nothing else to do unregister for send event notifications */ if(NULL == peer->peer_send_msg) { opal_event_del(&peer->peer_send_event); } break; } default: opal_output(0, "[%lu,%lu,%lu]-[%lu,%lu,%lu] mca_oob_tcp_peer_send_handler: invalid connection state (%d)", ORTE_NAME_ARGS(orte_process_info.my_name), ORTE_NAME_ARGS(&(peer->peer_name)), peer->peer_state); opal_event_del(&peer->peer_send_event); break; } OPAL_THREAD_UNLOCK(&peer->peer_lock); }