示例#1
0
文件: oob_tcp.c 项目: bureddy/ompi
static void ft_event(int state) {
#if 0
    opal_list_item_t *item;
#endif

    if(OPAL_CRS_CHECKPOINT == state) {
#if 0
        /*
         * Disable event processing while we are working
         */
        opal_event_disable();
#endif
    }
    else if(OPAL_CRS_CONTINUE == state) {
#if 0
        /*
         * Resume event processing
         */
        opal_event_enable();
    }
    else if(OPAL_CRS_RESTART == state) {
        /*
         * Clean out cached connection information
         * Select pieces of finalize/init
         */
        for (item = opal_list_remove_first(&mca_oob_tcp_module.peer_list);
            item != NULL;
            item = opal_list_remove_first(&mca_oob_tcp_module.peer_list)) {
            mca_oob_tcp_peer_t* peer = (mca_oob_tcp_peer_t*)item;
            /* JJH: Use the below command for debugging restarts with invalid sockets
             * mca_oob_tcp_peer_dump(peer, "RESTART CLEAN")
             */
            MCA_OOB_TCP_PEER_RETURN(peer);
        }

        OBJ_DESTRUCT(&mca_oob_tcp_module.peer_free);
        OBJ_DESTRUCT(&mca_oob_tcp_module.peer_names);
        OBJ_DESTRUCT(&mca_oob_tcp_module.peers);
        OBJ_DESTRUCT(&mca_oob_tcp_module.peer_list);

        OBJ_CONSTRUCT(&mca_oob_tcp_module.peer_list,     opal_list_t);
        OBJ_CONSTRUCT(&mca_oob_tcp_module.peers,         opal_hash_table_t);
        OBJ_CONSTRUCT(&mca_oob_tcp_module.peer_names,    opal_hash_table_t);
        OBJ_CONSTRUCT(&mca_oob_tcp_module.peer_free,     opal_free_list_t);

        /*
         * Resume event processing
         */
        opal_event_enable();
#endif
    }
    else if(OPAL_CRS_TERM == state ) {
        ;
    }
    else {
        ;
    }

    return;
}
int mca_btl_base_close(void)
{
    opal_list_item_t *item;
    mca_btl_base_selected_module_t *sm;

    if( mca_btl_base_already_opened <= 0 ) {
        return OMPI_ERROR;
    } else if (--mca_btl_base_already_opened > 0) {
        return OMPI_SUCCESS;
    }
    /* disable event processing while cleaning up btls */
    opal_event_disable();

    /* Finalize all the btl components and free their list items */

    for (item = opal_list_remove_first(&mca_btl_base_modules_initialized);
         NULL != item; 
         item = opal_list_remove_first(&mca_btl_base_modules_initialized)) {
        sm = (mca_btl_base_selected_module_t *) item;

        /* Blatebtly ignore the return code (what would we do to recover,
           anyway?  This component is going away, so errors don't matter
           anymore) */

        sm->btl_module->btl_finalize(sm->btl_module);
        free(sm);
    }

    /* Close all remaining opened components (may be one if this is a
       OMPI RTE program, or [possibly] multiple if this is ompi_info) */
  
    if (0 != opal_list_get_size(&mca_btl_base_components_opened)) {
        mca_base_components_close(mca_btl_base_output, 
                                  &mca_btl_base_components_opened, NULL,
                                  true);
    }

    /* cleanup */
    if(NULL != mca_btl_base_include)
        free(mca_btl_base_include);
    if(NULL != mca_btl_base_exclude)
        free(mca_btl_base_exclude);

    /* restore event processing */
    opal_event_enable();

    /* All done */
    return OMPI_SUCCESS;
}