#ifndef PMIX_PMDL_BASE_H_
#define PMIX_PMDL_BASE_H_
#include "src/include/pmix_config.h"
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
#ifdef HAVE_STRING_H
# include <string.h>
#endif
#include "src/class/pmix_list.h"
#include "src/class/pmix_pointer_array.h"
#include "src/mca/base/pmix_mca_base_framework.h"
#include "src/mca/mca.h"
#include "src/mca/pmdl/pmdl.h"
BEGIN_C_DECLS
PMIX_EXPORT extern pmix_mca_base_framework_t pmix_pmdl_base_framework;
PMIX_EXPORT pmix_status_t pmix_pmdl_base_select(void);
struct pmix_pmdl_base_active_module_t {
pmix_list_item_t super;
int pri;
pmix_pmdl_module_t *module;
pmix_pmdl_base_component_t *component;
};
typedef struct pmix_pmdl_base_active_module_t pmix_pmdl_base_active_module_t;
PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_pmdl_base_active_module_t);
struct pmix_pmdl_globals_t {
pmix_lock_t lock;
pmix_list_t actives;
bool initialized;
bool selected;
};
typedef struct pmix_pmdl_globals_t pmix_pmdl_globals_t;
PMIX_EXPORT extern pmix_pmdl_globals_t pmix_pmdl_globals;
PMIX_EXPORT pmix_status_t pmix_pmdl_base_harvest_envars(char *nspace, const pmix_info_t info[],
size_t ninfo, pmix_list_t *ilist);
PMIX_EXPORT void pmix_pmdl_base_parse_file_envars(pmix_list_t *ilist);
PMIX_EXPORT bool pmix_pmdl_base_check_prte_param(char *param);
PMIX_EXPORT bool pmix_pmdl_base_check_pmix_param(char *param);
PMIX_EXPORT pmix_status_t pmix_pmdl_base_setup_nspace(pmix_namespace_t *nptr, pmix_info_t *info);
PMIX_EXPORT pmix_status_t pmix_pmdl_base_setup_nspace_kv(pmix_namespace_t *nptr, pmix_kval_t *kv);
PMIX_EXPORT pmix_status_t pmix_pmdl_base_register_nspace(pmix_namespace_t *nptr);
PMIX_EXPORT pmix_status_t pmix_pmdl_base_setup_client(pmix_namespace_t *nptr, pmix_rank_t rank,
uint32_t appnum);
PMIX_EXPORT pmix_status_t pmix_pmdl_base_setup_fork(const pmix_proc_t *peer, char ***env);
PMIX_EXPORT void pmix_pmdl_base_deregister_nspace(const char *nptr);
END_C_DECLS
#endif