#ifndef PMIX_MCA_BASE_H
#define PMIX_MCA_BASE_H
#include "src/include/pmix_config.h"
#include "src/class/pmix_list.h"
#include "src/class/pmix_object.h"
#include "src/mca/base/pmix_mca_base_framework.h"
#include "src/mca/base/pmix_mca_base_var.h"
#include "src/mca/mca.h"
#include "src/util/pmix_cmd_line.h"
#include "src/util/pmix_output.h"
BEGIN_C_DECLS
struct pmix_mca_base_component_list_item_t {
pmix_list_item_t super;
const pmix_mca_base_component_t *cli_component;
};
typedef struct pmix_mca_base_component_list_item_t pmix_mca_base_component_list_item_t;
PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_mca_base_component_list_item_t);
struct pmix_mca_base_component_priority_list_item_t {
pmix_mca_base_component_list_item_t super;
int cpli_priority;
};
typedef struct pmix_mca_base_component_priority_list_item_t
pmix_mca_base_component_priority_list_item_t;
PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_mca_base_component_priority_list_item_t);
PMIX_EXPORT extern char *pmix_mca_base_component_path;
PMIX_EXPORT extern char *pmix_mca_base_component_show_load_errors;
PMIX_EXPORT extern bool pmix_mca_base_component_abort_on_load_error;
PMIX_EXPORT extern bool pmix_mca_base_component_track_load_errors;
PMIX_EXPORT extern bool pmix_mca_base_component_disable_dlopen;
PMIX_EXPORT extern char *pmix_mca_base_system_default_path;
PMIX_EXPORT extern char *pmix_mca_base_user_default_path;
enum {
PMIX_MCA_BASE_VERBOSE_NONE = -1,
PMIX_MCA_BASE_VERBOSE_ERROR = 0,
PMIX_MCA_BASE_VERBOSE_COMPONENT = 10,
PMIX_MCA_BASE_VERBOSE_WARN = 20,
PMIX_MCA_BASE_VERBOSE_INFO = 40,
PMIX_MCA_BASE_VERBOSE_TRACE = 60,
PMIX_MCA_BASE_VERBOSE_DEBUG = 80,
PMIX_MCA_BASE_VERBOSE_MAX = 100,
};
PMIX_EXPORT int pmix_mca_base_open(const char *add_path);
PMIX_EXPORT int pmix_mca_base_close(void);
PMIX_EXPORT int pmix_mca_base_select(const char *type_name, int output_id,
pmix_list_t *components_available,
pmix_mca_base_module_t **best_module,
pmix_mca_base_component_t **best_component, int *priority_out);
PMIX_EXPORT int pmix_mca_base_is_component_required(pmix_list_t *components_available,
pmix_mca_base_component_t *component,
bool exclusive, bool *is_required);
PMIX_EXPORT int
pmix_mca_base_component_compare_priority(pmix_mca_base_component_priority_list_item_t *a,
pmix_mca_base_component_priority_list_item_t *b);
PMIX_EXPORT int pmix_mca_base_component_compare(const pmix_mca_base_component_t *a,
const pmix_mca_base_component_t *b);
PMIX_EXPORT int pmix_mca_base_component_compatible(const pmix_mca_base_component_t *a,
const pmix_mca_base_component_t *b);
PMIX_EXPORT char *pmix_mca_base_component_to_string(const pmix_mca_base_component_t *a);
PMIX_EXPORT int pmix_mca_base_component_find(const char *directory,
pmix_mca_base_framework_t *framework,
bool ignore_requested, bool open_dso_components);
PMIX_EXPORT int pmix_mca_base_component_parse_requested(const char *requested, bool *include_mode,
char ***requested_component_names);
PMIX_EXPORT int pmix_mca_base_components_filter(pmix_mca_base_framework_t *framework);
PMIX_EXPORT int pmix_mca_base_component_find_finalize(void);
PMIX_EXPORT int
pmix_mca_base_framework_components_register(struct pmix_mca_base_framework_t *framework,
pmix_mca_base_register_flag_t flags);
PMIX_EXPORT int pmix_mca_base_show_load_errors_init(void);
PMIX_EXPORT int pmix_mca_base_show_load_errors_finalize(void);
PMIX_EXPORT bool pmix_mca_base_show_load_errors(const char *framework_name,
const char *component_name);
PMIX_EXPORT int pmix_mca_base_framework_components_open(struct pmix_mca_base_framework_t *framework,
pmix_mca_base_open_flag_t flags);
PMIX_EXPORT int pmix_mca_base_components_open(const char *type_name, int output_id,
const pmix_mca_base_component_t **static_components,
pmix_list_t *components_available,
bool open_dso_components);
PMIX_EXPORT void pmix_mca_base_component_close(const pmix_mca_base_component_t *component,
int output_id);
PMIX_EXPORT void pmix_mca_base_component_unload(const pmix_mca_base_component_t *component,
int output_id);
PMIX_EXPORT int pmix_mca_base_components_close(int output_id, pmix_list_t *components_available,
const pmix_mca_base_component_t *skip);
PMIX_EXPORT int
pmix_mca_base_framework_components_close(struct pmix_mca_base_framework_t *framework,
const pmix_mca_base_component_t *skip);
END_C_DECLS
#endif