1
1
openmpi/orte/runtime/orte_finalize.c
Ralph Castain bd8b4f7f1e Sorry for mid-day commit, but I had promised on the call to do this upon my return.
Roll in the ORTE state machine. Remove last traces of opal_sos. Remove UTK epoch code.

Please see the various emails about the state machine change for details. I'll send something out later with more info on the new arch.

This commit was SVN r26242.
2012-04-06 14:23:13 +00:00

90 строки
2.4 KiB
C

/*
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2006 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2009 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2011 Los Alamos National Security, LLC.
* All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/** @file **/
#include "orte_config.h"
#include "orte/constants.h"
#include "opal/runtime/opal.h"
#include "opal/util/output.h"
#include "orte/mca/ess/ess.h"
#include "orte/mca/ess/base/base.h"
#include "orte/runtime/orte_globals.h"
#include "orte/runtime/runtime.h"
#include "orte/runtime/orte_locks.h"
#include "orte/util/show_help.h"
/**
* Leave ORTE.
*
* @retval ORTE_SUCCESS Upon success.
* @retval ORTE_ERROR Upon failure.
*
* This function performs
*/
int orte_finalize(void)
{
if (!orte_initialized) {
return ORTE_SUCCESS;
}
/* protect against multiple calls */
if (opal_atomic_trylock(&orte_finalize_lock)) {
return ORTE_SUCCESS;
}
/* set the flag indicating we are finalizing */
orte_finalizing = true;
/* close the orte_show_help system */
orte_show_help_finalize();
/* call the finalize function for this environment */
orte_ess.finalize();
/* close the ess itself */
orte_ess_base_close();
/* cleanup the process info */
orte_proc_info_finalize();
#if !ORTE_DISABLE_FULL_SUPPORT
/* Free some MCA param strings */
if (NULL != orte_launch_agent) {
free(orte_launch_agent);
}
if( NULL != orte_default_hostfile ) {
free(orte_default_hostfile);
}
#endif
/* Close the general debug stream */
opal_output_close(orte_debug_output);
/* finalize the opal utilities */
opal_finalize();
orte_initialized = false;
return ORTE_SUCCESS;
}