1
1

Fix for the oob base open and close functions being invoked twice by

ompi_info -- once directly and once via the rml oob component.

This commit was SVN r13152.
Этот коммит содержится в:
Jeff Squyres 2007-01-17 15:18:13 +00:00
родитель cc905290e4
Коммит 6f7adfe231
2 изменённых файлов: 23 добавлений и 0 удалений

Просмотреть файл

@ -9,6 +9,7 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -30,6 +31,16 @@
int mca_oob_base_close(void) int mca_oob_base_close(void)
{ {
opal_list_item_t* item; opal_list_item_t* item;
static bool already_closed = false;
/* Sanity check. This may be able to be removed when the rml/oob
interface is re-worked (the current infrastructure may invoke
this function twice: once as a standalone, and once via the rml
oob component). */
if (already_closed) {
return ORTE_SUCCESS;
}
/* Finalize all the oob modules and free their list items */ /* Finalize all the oob modules and free their list items */
for (item = opal_list_remove_first(&mca_oob_base_modules); for (item = opal_list_remove_first(&mca_oob_base_modules);
@ -55,6 +66,7 @@ int mca_oob_base_close(void)
free(mca_oob_base_exclude); free(mca_oob_base_exclude);
/* All done */ /* All done */
already_closed = true;
return ORTE_SUCCESS; return ORTE_SUCCESS;
} }

Просмотреть файл

@ -9,6 +9,7 @@
* University of Stuttgart. All rights reserved. * University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California. * Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved. * All rights reserved.
* Copyright (c) 2007 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
* *
* Additional copyrights may follow * Additional copyrights may follow
@ -57,6 +58,15 @@ int mca_oob_base_open(void)
{ {
int param, value; int param, value;
char *mode; char *mode;
static bool already_opened = false;
/* Sanity check. This may be able to be removed when the rml/oob
interface is re-worked (the current infrastructure may invoke
this function twice: once as a standalone, and once via the rml
oob component). */
if (already_opened) {
return ORTE_SUCCESS;
}
/* Open up all available components */ /* Open up all available components */
@ -110,6 +120,7 @@ int mca_oob_base_open(void)
} }
/* All done */ /* All done */
already_opened = true;
return ORTE_SUCCESS; return ORTE_SUCCESS;
} }