
This commit does two things. It removes checks for C99 required headers (stdlib.h, string.h, signal.h, etc). Additionally it removes definitions for required C99 types (intptr_t, int64_t, int32_t, etc). Signed-off-by: Nathan Hjelm <hjelmn@me.com>
128 строки
4.8 KiB
C
128 строки
4.8 KiB
C
/*
|
|
* Copyright (c) 2004-2008 The Trustees of Indiana University and Indiana
|
|
* University Research and Technology
|
|
* Corporation. All rights reserved.
|
|
* Copyright (c) 2004-2005 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) 2014-2015 Intel, Inc. All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
|
|
#include "orte_config.h"
|
|
|
|
#include <string.h>
|
|
|
|
#include "orte/mca/mca.h"
|
|
#include "opal/mca/base/base.h"
|
|
#include "opal/util/argv.h"
|
|
#include "opal/util/output.h"
|
|
#include "opal/class/opal_pointer_array.h"
|
|
|
|
#include "orte/mca/notifier/base/base.h"
|
|
|
|
/* Global variables */
|
|
/*
|
|
* orte_notifier_base_selected is set to true if at least 1 module has
|
|
* been selected for the notifier log API interface.
|
|
*/
|
|
static bool orte_notifier_base_selected = false;
|
|
|
|
/**
|
|
* Function for weeding out notifier components that don't want to run.
|
|
*
|
|
* Call the init function on all available compoenent to find out if
|
|
* they want to run. Select all components that don't fail. Failing
|
|
* Components will be closed and unloaded. The selected modules will
|
|
* be returned to the called in a opal_list_t.
|
|
*/
|
|
|
|
int orte_notifier_base_select(void)
|
|
{
|
|
mca_base_component_list_item_t *cli = NULL;
|
|
orte_notifier_base_component_t *component = NULL;
|
|
mca_base_module_t *module = NULL;
|
|
int priority;
|
|
orte_notifier_active_module_t *tmp_module;
|
|
orte_notifier_base_module_t *bmod;
|
|
|
|
if (orte_notifier_base_selected) {
|
|
return ORTE_SUCCESS;
|
|
}
|
|
orte_notifier_base_selected = true;
|
|
|
|
opal_output_verbose(10, orte_notifier_base_framework.framework_output,
|
|
"notifier:base:select: Auto-selecting components");
|
|
|
|
/*
|
|
* Traverse the list of available components.
|
|
* For each call their 'query' functions to see if they are available.
|
|
*/
|
|
OPAL_LIST_FOREACH(cli, &orte_notifier_base_framework.framework_components, mca_base_component_list_item_t) {
|
|
component = (orte_notifier_base_component_t *) cli->cli_component;
|
|
|
|
/*
|
|
* If there is a query function then use it.
|
|
*/
|
|
if (NULL == component->base_version.mca_query_component) {
|
|
opal_output_verbose(5, orte_notifier_base_framework.framework_output,
|
|
"notifier:base:select Skipping component [%s]. It does not implement a query function",
|
|
component->base_version.mca_component_name );
|
|
continue;
|
|
}
|
|
|
|
/*
|
|
* Query this component for the module and priority
|
|
*/
|
|
opal_output_verbose(5, orte_notifier_base_framework.framework_output,
|
|
"notifier:base:select Querying component [%s]",
|
|
component->base_version.mca_component_name);
|
|
|
|
component->base_version.mca_query_component(&module, &priority);
|
|
|
|
/*
|
|
* If no module was returned or negative priority, then skip component
|
|
*/
|
|
if (NULL == module || priority < 0) {
|
|
opal_output_verbose(5, orte_notifier_base_framework.framework_output,
|
|
"notifier:base:select Skipping component [%s]. Query failed to return a module",
|
|
component->base_version.mca_component_name );
|
|
continue;
|
|
}
|
|
bmod = (orte_notifier_base_module_t*)module;
|
|
|
|
/* see if it can be init'd */
|
|
if (NULL != bmod->init) {
|
|
opal_output_verbose(5, orte_notifier_base_framework.framework_output,
|
|
"notifier:base:init module called with priority [%s] %d",
|
|
component->base_version.mca_component_name, priority);
|
|
if (ORTE_SUCCESS != bmod->init()) {
|
|
continue;
|
|
}
|
|
}
|
|
/*
|
|
* Append them to the list
|
|
*/
|
|
opal_output_verbose(5, orte_notifier_base_framework.framework_output,
|
|
"notifier:base:select adding component [%s]",
|
|
component->base_version.mca_component_name);
|
|
tmp_module = OBJ_NEW(orte_notifier_active_module_t);
|
|
tmp_module->component = component;
|
|
tmp_module->module = (orte_notifier_base_module_t*)module;
|
|
|
|
opal_list_append(&orte_notifier_base.modules, (void*)tmp_module);
|
|
}
|
|
|
|
return ORTE_SUCCESS;
|
|
}
|