Update to track PMIx master
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
родитель
41c7230bc4
Коммит
cbc114e923
@ -30,7 +30,7 @@ greek=
|
||||
# command, or with the date (if "git describe" fails) in the form of
|
||||
# "date<date>".
|
||||
|
||||
repo_rev=git3920e33
|
||||
repo_rev=gitaffab34
|
||||
|
||||
# If tarball_version is not empty, it is used as the version string in
|
||||
# the tarball filename, regardless of all other versions listed in
|
||||
@ -44,7 +44,7 @@ tarball_version=
|
||||
|
||||
# The date when this release was created
|
||||
|
||||
date="Sep 01, 2017"
|
||||
date="Sep 06, 2017"
|
||||
|
||||
# The shared library version of each of PMIx's public libraries.
|
||||
# These versions are maintained in accordance with the "Library
|
||||
|
@ -34,7 +34,14 @@ AC_DEFUN([PMIX_SETUP_CORE],[
|
||||
|
||||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
AC_REQUIRE([AC_CANONICAL_TARGET])
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
|
||||
# AM_PROG_CC_C_O AC_REQUIREs AC_PROG_CC, so we have to be a little
|
||||
# careful about ordering here, and AC_REQUIRE these things so that
|
||||
# they get stamped out in the right order.
|
||||
AC_REQUIRE([_PMIX_START_SETUP_CC])
|
||||
AC_REQUIRE([_PMIX_PROG_CC])
|
||||
AC_REQUIRE([AM_PROG_CC_C_O])
|
||||
|
||||
|
||||
# If no prefix was defined, set a good value
|
||||
m4_ifval([$1],
|
||||
|
@ -16,7 +16,7 @@ dnl Copyright (c) 2012-2017 Los Alamos National Security, LLC. All rights
|
||||
dnl reserved.
|
||||
dnl Copyright (c) 2015 Research Organization for Information Science
|
||||
dnl and Technology (RIST). All rights reserved.
|
||||
dnl Copyright (c) 2015-2016 Intel, Inc. All rights reserved.
|
||||
dnl Copyright (c) 2015-2017 Intel, Inc. All rights reserved.
|
||||
dnl $COPYRIGHT$
|
||||
dnl
|
||||
dnl Additional copyrights may follow
|
||||
@ -29,22 +29,14 @@ dnl
|
||||
# Do everything required to setup the C compiler. Safe to AC_REQUIRE
|
||||
# this macro.
|
||||
AC_DEFUN([PMIX_SETUP_CC],[
|
||||
# AM_PROG_CC_C_O AC_REQUIREs AC_PROG_CC, so we have to be a little
|
||||
# careful about ordering here, and AC_REQUIRE these things so that
|
||||
# they get stamped out in the right order.
|
||||
|
||||
AC_REQUIRE([_PMIX_START_SETUP_CC])
|
||||
AC_REQUIRE([_PMIX_PROG_CC])
|
||||
AC_REQUIRE([AM_PROG_CC_C_O])
|
||||
|
||||
# We require a C99 compiant compiler
|
||||
# We require a C99 compliant compiler
|
||||
# The result of AC_PROG_CC_C99 is stored in ac_cv_prog_cc_c99
|
||||
if test "x$ac_cv_prog_cc_c99" = xno ; then
|
||||
AC_MSG_WARN([PMIx requires a C99 compiler])
|
||||
AC_MSG_ERROR([Aborting.])
|
||||
fi
|
||||
|
||||
|
||||
PMIX_C_COMPILER_VENDOR([pmix_c_vendor])
|
||||
|
||||
# Check for standard headers, needed here because needed before
|
||||
@ -309,6 +301,7 @@ AC_DEFUN([PMIX_SETUP_CC],[
|
||||
AC_DEFUN([_PMIX_START_SETUP_CC],[
|
||||
pmix_show_subtitle "C compiler and preprocessor"
|
||||
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
# $%@#!@#% AIX!! This has to be called before anything invokes the C
|
||||
# compiler.
|
||||
dnl AC_AIX
|
||||
|
@ -334,7 +334,9 @@ int main(int argc, char **argv)
|
||||
/* setup the executable */
|
||||
app[0].cmd = strdup("client");
|
||||
PMIX_ARGV_APPEND(rc, app[0].argv, "./client");
|
||||
getcwd(cwd, 1024); // point us to our current directory
|
||||
if (NULL == getcwd(cwd, 1024)) { // point us to our current directory
|
||||
goto done;
|
||||
}
|
||||
app[0].cwd = strdup(cwd);
|
||||
app[0].maxprocs = 2;
|
||||
/* provide job-level directives so the apps do what the user requested */
|
||||
|
@ -482,15 +482,14 @@ PMIX_EXPORT pmix_status_t PMIx_Init(pmix_proc_t *proc,
|
||||
if (NULL != evar) {
|
||||
PMIX_INFO_LOAD(&ginfo, PMIX_GDS_MODULE, evar, PMIX_STRING);
|
||||
pmix_client_globals.myserver->nptr->compat.gds = pmix_gds_base_assign_module(&ginfo, 1);
|
||||
PMIX_INFO_DESTRUCT(&ginfo);
|
||||
} else {
|
||||
pmix_client_globals.myserver->nptr->compat.gds = pmix_gds_base_assign_module(NULL, 0);
|
||||
}
|
||||
if (NULL == pmix_client_globals.myserver->nptr->compat.gds) {
|
||||
PMIX_INFO_DESTRUCT(&ginfo);
|
||||
PMIX_RELEASE_THREAD(&pmix_global_lock);
|
||||
return PMIX_ERR_INIT;
|
||||
}
|
||||
PMIX_INFO_DESTRUCT(&ginfo);
|
||||
/* now select a GDS module for our own internal use - the user may
|
||||
* have passed down a directive for this purpose. If they did, then
|
||||
* use it. Otherwise, we want the "hash" module */
|
||||
|
@ -109,7 +109,7 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
|
||||
pmix_op_cbfunc_t cbfunc, void *cbdata)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
pmix_buffer_t *msg;
|
||||
pmix_buffer_t *msg = NULL;
|
||||
pmix_cmd_t cmd = PMIX_NOTIFY_CMD;
|
||||
pmix_cb_t *cb;
|
||||
pmix_event_chain_t *chain;
|
||||
@ -231,7 +231,7 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
|
||||
PMIX_RELEASE(rbout);
|
||||
}
|
||||
|
||||
if (PMIX_RANGE_PROC_LOCAL != range) {
|
||||
if (PMIX_RANGE_PROC_LOCAL != range && NULL != msg) {
|
||||
/* create a callback object as we need to pass it to the
|
||||
* recv routine so we know which callback to use when
|
||||
* the server acks/nacks the register events request. The
|
||||
@ -263,7 +263,9 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
|
||||
cleanup:
|
||||
pmix_output_verbose(2, pmix_globals.debug_output,
|
||||
"client: notifying server - unable to send");
|
||||
if (NULL != msg) {
|
||||
PMIX_RELEASE(msg);
|
||||
}
|
||||
/* we were unable to send anything, so we just return the error */
|
||||
return rc;
|
||||
}
|
||||
|
@ -428,7 +428,7 @@ static void reg_event_hdlr(int sd, short args, void *cbdata)
|
||||
void *cbobject = NULL;
|
||||
pmix_data_range_t range = PMIX_RANGE_UNDEF;
|
||||
pmix_proc_t *parray = NULL;
|
||||
size_t nprocs;
|
||||
size_t nprocs = 0;
|
||||
|
||||
/* need to acquire the object from its originating thread */
|
||||
PMIX_ACQUIRE_OBJECT(cd);
|
||||
@ -527,7 +527,7 @@ static void reg_event_hdlr(int sd, short args, void *cbdata)
|
||||
evhdlr->index = index;
|
||||
++pmix_globals.events.nhdlrs;
|
||||
evhdlr->rng.range = range;
|
||||
if (NULL != parray) {
|
||||
if (NULL != parray && 0 < nprocs) {
|
||||
evhdlr->rng.nprocs = nprocs;
|
||||
PMIX_PROC_CREATE(evhdlr->rng.procs, nprocs);
|
||||
if (NULL == evhdlr->rng.procs) {
|
||||
@ -601,7 +601,7 @@ static void reg_event_hdlr(int sd, short args, void *cbdata)
|
||||
evhdlr->precedence = location;
|
||||
evhdlr->locator = locator;
|
||||
evhdlr->rng.range = range;
|
||||
if (NULL != parray) {
|
||||
if (NULL != parray && 0 < nprocs) {
|
||||
evhdlr->rng.nprocs = nprocs;
|
||||
PMIX_PROC_CREATE(evhdlr->rng.procs, nprocs);
|
||||
if (NULL == evhdlr->rng.procs) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Copyright (c) 2012-2015 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
* Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2016 Intel, Inc. All rights reserved
|
||||
* Copyright (c) 2016-2017 Intel, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -81,8 +81,12 @@ int pmix_mca_base_framework_register (struct pmix_mca_base_framework_t *framewor
|
||||
return ret;
|
||||
}
|
||||
|
||||
asprintf (&desc, "Default selection set of components for the %s framework (<none>"
|
||||
ret = asprintf (&desc, "Default selection set of components for the %s framework (<none>"
|
||||
" means use all components that can be found)", framework->framework_name);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
ret = pmix_mca_base_var_register (framework->framework_project, framework->framework_name,
|
||||
NULL, NULL, desc, PMIX_MCA_BASE_VAR_TYPE_STRING, NULL, 0,
|
||||
PMIX_MCA_BASE_VAR_FLAG_SETTABLE, PMIX_INFO_LVL_2,
|
||||
|
@ -69,6 +69,7 @@ int pmix_mca_base_open(void)
|
||||
pmix_output_stream_t lds;
|
||||
char hostname[64];
|
||||
int var_id;
|
||||
int rc;
|
||||
|
||||
if (pmix_mca_base_opened++) {
|
||||
return PMIX_SUCCESS;
|
||||
@ -77,17 +78,24 @@ int pmix_mca_base_open(void)
|
||||
/* define the system and user default paths */
|
||||
#if PMIX_WANT_HOME_CONFIG_FILES
|
||||
pmix_mca_base_system_default_path = strdup(pmix_pinstall_dirs.pmixlibdir);
|
||||
asprintf(&pmix_mca_base_user_default_path, "%s"PMIX_PATH_SEP".pmix"PMIX_PATH_SEP"components", pmix_home_directory());
|
||||
rc = asprintf(&pmix_mca_base_user_default_path, "%s"PMIX_PATH_SEP".pmix"PMIX_PATH_SEP"components", pmix_home_directory());
|
||||
#else
|
||||
asprintf(&pmix_mca_base_system_default_path, "%s", pmix_pinstall_dirs.pmixlibdir);
|
||||
rc = asprintf(&pmix_mca_base_system_default_path, "%s", pmix_pinstall_dirs.pmixlibdir);
|
||||
#endif
|
||||
|
||||
if (0 > rc) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* see if the user wants to override the defaults */
|
||||
if (NULL == pmix_mca_base_user_default_path) {
|
||||
value = strdup(pmix_mca_base_system_default_path);
|
||||
} else {
|
||||
asprintf(&value, "%s%c%s", pmix_mca_base_system_default_path,
|
||||
rc = asprintf(&value, "%s%c%s", pmix_mca_base_system_default_path,
|
||||
PMIX_ENV_SEP, pmix_mca_base_user_default_path);
|
||||
if (0 > rc) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
|
||||
pmix_mca_base_component_path = value;
|
||||
@ -139,7 +147,10 @@ int pmix_mca_base_open(void)
|
||||
set_defaults(&lds);
|
||||
}
|
||||
gethostname(hostname, 64);
|
||||
asprintf(&lds.lds_prefix, "[%s:%05d] ", hostname, getpid());
|
||||
rc = asprintf(&lds.lds_prefix, "[%s:%05d] ", hostname, getpid());
|
||||
if (0 > rc) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
pmix_output_reopen(0, &lds);
|
||||
pmix_output_verbose (PMIX_MCA_BASE_VERBOSE_COMPONENT, 0,
|
||||
"mca: base: opening components at %s", pmix_mca_base_component_path);
|
||||
|
@ -405,7 +405,13 @@ static void resolve_relative_paths(char **file_prefix, char *file_path, bool rel
|
||||
}
|
||||
else {
|
||||
/* Prepend the files to the search list */
|
||||
asprintf(&tmp_str, "%s%c%s", *file_prefix, sep, *files);
|
||||
if (0 > asprintf(&tmp_str, "%s%c%s", *file_prefix, sep, *files)) {
|
||||
pmix_output(0, "OUT OF MEM");
|
||||
free(*files);
|
||||
free(tmp_str);
|
||||
*files = NULL;
|
||||
return;
|
||||
}
|
||||
free (*files);
|
||||
*files = tmp_str;
|
||||
}
|
||||
@ -428,13 +434,16 @@ int pmix_mca_base_var_cache_files(bool rel_path_search)
|
||||
}
|
||||
|
||||
#if PMIX_WANT_HOME_CONFIG_FILES
|
||||
asprintf(&pmix_mca_base_var_files, "%s"PMIX_PATH_SEP".pmix" PMIX_PATH_SEP
|
||||
ret = asprintf(&pmix_mca_base_var_files, "%s"PMIX_PATH_SEP".pmix" PMIX_PATH_SEP
|
||||
"mca-params.conf%c%s" PMIX_PATH_SEP "pmix-mca-params.conf",
|
||||
home, PMIX_ENV_SEP, pmix_pinstall_dirs.sysconfdir);
|
||||
#else
|
||||
asprintf(&pmix_mca_base_var_files, "%s" PMIX_PATH_SEP "pmix-mca-params.conf",
|
||||
ret = asprintf(&pmix_mca_base_var_files, "%s" PMIX_PATH_SEP "pmix-mca-params.conf",
|
||||
pmix_pinstall_dirs.sysconfdir);
|
||||
#endif
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Initialize a parameter that says where MCA param files can be found.
|
||||
We may change this value so set the scope to PMIX_MCA_BASE_VAR_SCOPE_READONLY */
|
||||
@ -536,8 +545,11 @@ int pmix_mca_base_var_cache_files(bool rel_path_search)
|
||||
if (NULL != pmix_mca_base_param_file_path) {
|
||||
char *tmp_str = pmix_mca_base_param_file_path;
|
||||
|
||||
asprintf(&pmix_mca_base_param_file_path, "%s%c%s", force_agg_path, PMIX_ENV_SEP, tmp_str);
|
||||
ret = asprintf(&pmix_mca_base_param_file_path, "%s%c%s", force_agg_path, PMIX_ENV_SEP, tmp_str);
|
||||
free(tmp_str);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
} else {
|
||||
pmix_mca_base_param_file_path = strdup(force_agg_path);
|
||||
}
|
||||
@ -1021,7 +1033,7 @@ int pmix_mca_base_var_build_env(char ***env, int *num_env, bool internal)
|
||||
{
|
||||
pmix_mca_base_var_t *var;
|
||||
size_t i, len;
|
||||
int ret;
|
||||
int ret=0;
|
||||
|
||||
/* Check for bozo cases */
|
||||
|
||||
@ -1068,14 +1080,15 @@ int pmix_mca_base_var_build_env(char ***env, int *num_env, bool internal)
|
||||
pmix_argv_append(num_env, env, str);
|
||||
free(str);
|
||||
|
||||
ret = PMIX_SUCCESS;
|
||||
switch (var->mbv_source) {
|
||||
case PMIX_MCA_BASE_VAR_SOURCE_FILE:
|
||||
case PMIX_MCA_BASE_VAR_SOURCE_OVERRIDE:
|
||||
asprintf (&str, "%sSOURCE_%s=FILE:%s", mca_prefix, var->mbv_full_name,
|
||||
ret = asprintf (&str, "%sSOURCE_%s=FILE:%s", mca_prefix, var->mbv_full_name,
|
||||
pmix_mca_base_var_source_file (var));
|
||||
break;
|
||||
case PMIX_MCA_BASE_VAR_SOURCE_COMMAND_LINE:
|
||||
asprintf (&str, "%sSOURCE_%s=COMMAND_LINE", mca_prefix, var->mbv_full_name);
|
||||
ret = asprintf (&str, "%sSOURCE_%s=COMMAND_LINE", mca_prefix, var->mbv_full_name);
|
||||
break;
|
||||
case PMIX_MCA_BASE_VAR_SOURCE_ENV:
|
||||
case PMIX_MCA_BASE_VAR_SOURCE_SET:
|
||||
@ -1091,10 +1104,12 @@ int pmix_mca_base_var_build_env(char ***env, int *num_env, bool internal)
|
||||
free(str);
|
||||
}
|
||||
}
|
||||
if (ret < 0) {
|
||||
ret = PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* All done */
|
||||
|
||||
return PMIX_SUCCESS;
|
||||
return ret;
|
||||
|
||||
/* Error condition */
|
||||
|
||||
@ -2110,29 +2125,46 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
}
|
||||
|
||||
/* build the message*/
|
||||
asprintf(&tmp, "mca:%s:%s:param:%s:", framework, component,
|
||||
full_name);
|
||||
ret = asprintf(&tmp, "mca:%s:%s:param:%s:", framework, component, full_name);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Output the value */
|
||||
char *colon = strchr(value_string, ':');
|
||||
if (NULL != colon) {
|
||||
asprintf(out[0] + line++, "%svalue:\"%s\"", tmp, value_string);
|
||||
ret = asprintf(out[0] + line++, "%svalue:\"%s\"", tmp, value_string);
|
||||
} else {
|
||||
asprintf(out[0] + line++, "%svalue:%s", tmp, value_string);
|
||||
ret = asprintf(out[0] + line++, "%svalue:%s", tmp, value_string);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Output the source */
|
||||
asprintf(out[0] + line++, "%ssource:%s", tmp, source_string);
|
||||
ret = asprintf(out[0] + line++, "%ssource:%s", tmp, source_string);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Output whether it's read only or writable */
|
||||
asprintf(out[0] + line++, "%sstatus:%s", tmp, PMIX_VAR_IS_DEFAULT_ONLY(var[0]) ? "read-only" : "writeable");
|
||||
ret = asprintf(out[0] + line++, "%sstatus:%s", tmp, PMIX_VAR_IS_DEFAULT_ONLY(var[0]) ? "read-only" : "writeable");
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Output the info level of this parametere */
|
||||
asprintf(out[0] + line++, "%slevel:%d", tmp, var->mbv_info_lvl + 1);
|
||||
ret = asprintf(out[0] + line++, "%slevel:%d", tmp, var->mbv_info_lvl + 1);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* If it has a help message, output the help message */
|
||||
if (var->mbv_description) {
|
||||
asprintf(out[0] + line++, "%shelp:%s", tmp, var->mbv_description);
|
||||
ret = asprintf(out[0] + line++, "%shelp:%s", tmp, var->mbv_description);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
if (NULL != var->mbv_enumerator) {
|
||||
@ -2146,18 +2178,30 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
continue;
|
||||
}
|
||||
|
||||
asprintf(out[0] + line++, "%senumerator:value:%d:%s", tmp, enum_value, enum_string);
|
||||
ret = asprintf(out[0] + line++, "%senumerator:value:%d:%s", tmp, enum_value, enum_string);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Is this variable deprecated? */
|
||||
asprintf(out[0] + line++, "%sdeprecated:%s", tmp, PMIX_VAR_IS_DEPRECATED(var[0]) ? "yes" : "no");
|
||||
ret = asprintf(out[0] + line++, "%sdeprecated:%s", tmp, PMIX_VAR_IS_DEPRECATED(var[0]) ? "yes" : "no");
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
asprintf(out[0] + line++, "%stype:%s", tmp, pmix_var_type_names[var->mbv_type]);
|
||||
ret = asprintf(out[0] + line++, "%stype:%s", tmp, pmix_var_type_names[var->mbv_type]);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
/* Does this parameter have any synonyms or is it a synonym? */
|
||||
if (PMIX_VAR_IS_SYNONYM(var[0])) {
|
||||
asprintf(out[0] + line++, "%ssynonym_of:name:%s", tmp, original->mbv_full_name);
|
||||
ret = asprintf(out[0] + line++, "%ssynonym_of:name:%s", tmp, original->mbv_full_name);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
} else if (pmix_value_array_get_size(&var->mbv_synonyms)) {
|
||||
for (i = 0 ; i < synonym_count ; ++i) {
|
||||
pmix_mca_base_var_t *synonym;
|
||||
@ -2167,7 +2211,10 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
continue;
|
||||
}
|
||||
|
||||
asprintf(out[0] + line++, "%ssynonym:name:%s", tmp, synonym->mbv_full_name);
|
||||
ret = asprintf(out[0] + line++, "%ssynonym:name:%s", tmp, synonym->mbv_full_name);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2181,25 +2228,37 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
asprintf (out[0], "%s \"%s\" (current value: \"%s\", data source: %s, level: %d %s, type: %s",
|
||||
ret = asprintf (out[0], "%s \"%s\" (current value: \"%s\", data source: %s, level: %d %s, type: %s",
|
||||
PMIX_VAR_IS_DEFAULT_ONLY(var[0]) ? "informational" : "parameter",
|
||||
full_name, value_string, source_string, var->mbv_info_lvl + 1,
|
||||
info_lvl_strings[var->mbv_info_lvl], pmix_var_type_names[var->mbv_type]);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
tmp = out[0][0];
|
||||
if (PMIX_VAR_IS_DEPRECATED(var[0])) {
|
||||
asprintf (out[0], "%s, deprecated", tmp);
|
||||
ret = asprintf (out[0], "%s, deprecated", tmp);
|
||||
free (tmp);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
tmp = out[0][0];
|
||||
}
|
||||
|
||||
/* Does this parameter have any synonyms or is it a synonym? */
|
||||
if (PMIX_VAR_IS_SYNONYM(var[0])) {
|
||||
asprintf(out[0], "%s, synonym of: %s)", tmp, original->mbv_full_name);
|
||||
ret = asprintf(out[0], "%s, synonym of: %s)", tmp, original->mbv_full_name);
|
||||
free (tmp);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
} else if (synonym_count) {
|
||||
asprintf(out[0], "%s, synonyms: ", tmp);
|
||||
ret = asprintf(out[0], "%s, synonyms: ", tmp);
|
||||
free (tmp);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
for (i = 0 ; i < synonym_count ; ++i) {
|
||||
pmix_mca_base_var_t *synonym;
|
||||
@ -2211,21 +2270,30 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
|
||||
tmp = out[0][0];
|
||||
if (synonym_count == i+1) {
|
||||
asprintf(out[0], "%s%s)", tmp, synonym->mbv_full_name);
|
||||
ret = asprintf(out[0], "%s%s)", tmp, synonym->mbv_full_name);
|
||||
} else {
|
||||
asprintf(out[0], "%s%s, ", tmp, synonym->mbv_full_name);
|
||||
ret = asprintf(out[0], "%s%s, ", tmp, synonym->mbv_full_name);
|
||||
}
|
||||
free(tmp);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
asprintf(out[0], "%s)", tmp);
|
||||
ret = asprintf(out[0], "%s)", tmp);
|
||||
free(tmp);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
|
||||
line++;
|
||||
|
||||
if (var->mbv_description) {
|
||||
asprintf(out[0] + line++, "%s", var->mbv_description);
|
||||
ret = asprintf(out[0] + line++, "%s", var->mbv_description);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL != var->mbv_enumerator) {
|
||||
@ -2233,8 +2301,11 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
|
||||
ret = var->mbv_enumerator->dump(var->mbv_enumerator, &values);
|
||||
if (PMIX_SUCCESS == ret) {
|
||||
asprintf (out[0] + line++, "Valid values: %s", values);
|
||||
ret = asprintf (out[0] + line++, "Valid values: %s", values);
|
||||
free (values);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (PMIX_MCA_BASE_VAR_DUMP_SIMPLE == output_type) {
|
||||
@ -2245,7 +2316,10 @@ int pmix_mca_base_var_dump(int vari, char ***out, pmix_mca_base_var_dump_type_t
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
|
||||
asprintf(out[0], "%s=%s (%s)", var->mbv_full_name, value_string, source_string);
|
||||
ret = asprintf(out[0], "%s=%s (%s)", var->mbv_full_name, value_string, source_string);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
}
|
||||
|
||||
free (value_string);
|
||||
|
@ -362,7 +362,10 @@ pmix_status_t pmix_bfrops_base_pack_float(pmix_buffer_t *buffer, const void *src
|
||||
char *convert;
|
||||
|
||||
for (i = 0; i < num_vals; ++i) {
|
||||
asprintf(&convert, "%f", ssrc[i]);
|
||||
ret = asprintf(&convert, "%f", ssrc[i]);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
if (PMIX_SUCCESS != (ret = pmix_bfrops_base_pack_string(buffer, &convert, 1, PMIX_STRING))) {
|
||||
free(convert);
|
||||
return ret;
|
||||
@ -383,7 +386,10 @@ pmix_status_t pmix_bfrops_base_pack_double(pmix_buffer_t *buffer, const void *sr
|
||||
char *convert;
|
||||
|
||||
for (i = 0; i < num_vals; ++i) {
|
||||
asprintf(&convert, "%f", ssrc[i]);
|
||||
ret = asprintf(&convert, "%f", ssrc[i]);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
if (PMIX_SUCCESS != (ret = pmix_bfrops_base_pack_string(buffer, &convert, 1, PMIX_STRING))) {
|
||||
free(convert);
|
||||
return ret;
|
||||
|
@ -62,6 +62,7 @@ int pmix_bfrops_base_print_bool(char **output, char *prefix,
|
||||
bool *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -74,26 +75,35 @@ int pmix_bfrops_base_print_bool(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_BOOL\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_BOOL\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_BOOL\tValue: %s", prefix,
|
||||
ret = asprintf(output, "%sData type: PMIX_BOOL\tValue: %s", prefix,
|
||||
(*src) ? "TRUE" : "FALSE");
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_byte(char **output, char *prefix,
|
||||
uint8_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -106,25 +116,34 @@ int pmix_bfrops_base_print_byte(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_BYTE\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_BYTE\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_BYTE\tValue: %x", prefix, *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_BYTE\tValue: %x", prefix, *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_string(char **output, char *prefix,
|
||||
char *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -137,25 +156,34 @@ int pmix_bfrops_base_print_string(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_STRING\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_STRING\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_STRING\tValue: %s", prefx, src);
|
||||
ret = asprintf(output, "%sData type: PMIX_STRING\tValue: %s", prefx, src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_size(char **output, char *prefix,
|
||||
size_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -168,25 +196,34 @@ int pmix_bfrops_base_print_size(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_SIZE\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_SIZE\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_SIZE\tValue: %lu", prefx, (unsigned long) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_SIZE\tValue: %lu", prefx, (unsigned long) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_pid(char **output, char *prefix,
|
||||
pid_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -199,24 +236,33 @@ int pmix_bfrops_base_print_pid(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_PID\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_PID\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_PID\tValue: %lu", prefx, (unsigned long) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_PID\tValue: %lu", prefx, (unsigned long) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_int(char **output, char *prefix,
|
||||
int *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -229,25 +275,34 @@ int pmix_bfrops_base_print_int(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_INT\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_INT\tValue: %ld", prefx, (long) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT\tValue: %ld", prefx, (long) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_uint(char **output, char *prefix,
|
||||
uint *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -260,25 +315,34 @@ int pmix_bfrops_base_print_uint(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_UINT\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_UINT\tValue: %lu", prefx, (unsigned long) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT\tValue: %lu", prefx, (unsigned long) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_uint8(char **output, char *prefix,
|
||||
uint8_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -291,25 +355,34 @@ int pmix_bfrops_base_print_uint8(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_UINT8\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT8\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_UINT8\tValue: %u", prefx, (unsigned int) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT8\tValue: %u", prefx, (unsigned int) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_uint16(char **output, char *prefix,
|
||||
uint16_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -322,25 +395,34 @@ int pmix_bfrops_base_print_uint16(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_UINT16\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT16\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_UINT16\tValue: %u", prefx, (unsigned int) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT16\tValue: %u", prefx, (unsigned int) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_uint32(char **output, char *prefix,
|
||||
uint32_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -353,25 +435,34 @@ int pmix_bfrops_base_print_uint32(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_UINT32\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT32\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_UINT32\tValue: %u", prefx, (unsigned int) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT32\tValue: %u", prefx, (unsigned int) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_int8(char **output, char *prefix,
|
||||
int8_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -384,25 +475,34 @@ int pmix_bfrops_base_print_int8(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_INT8\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT8\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_INT8\tValue: %d", prefx, (int) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT8\tValue: %d", prefx, (int) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_int16(char **output, char *prefix,
|
||||
int16_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -415,25 +515,34 @@ int pmix_bfrops_base_print_int16(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_INT16\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT16\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_INT16\tValue: %d", prefx, (int) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT16\tValue: %d", prefx, (int) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_int32(char **output, char *prefix,
|
||||
int32_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -446,25 +555,34 @@ int pmix_bfrops_base_print_int32(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_INT32\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT32\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_INT32\tValue: %d", prefx, (int) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT32\tValue: %d", prefx, (int) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
int pmix_bfrops_base_print_uint64(char **output, char *prefix,
|
||||
uint64_t *src,
|
||||
pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -477,26 +595,35 @@ int pmix_bfrops_base_print_uint64(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_UINT64\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT64\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_UINT64\tValue: %lu", prefx, (unsigned long) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_UINT64\tValue: %lu", prefx, (unsigned long) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_int64(char **output, char *prefix,
|
||||
int64_t *src,
|
||||
pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -509,25 +636,34 @@ int pmix_bfrops_base_print_int64(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_INT64\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT64\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_INT64\tValue: %ld", prefx, (long) *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_INT64\tValue: %ld", prefx, (long) *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_float(char **output, char *prefix,
|
||||
float *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -540,25 +676,34 @@ int pmix_bfrops_base_print_float(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_FLOAT\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_FLOAT\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_FLOAT\tValue: %f", prefx, *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_FLOAT\tValue: %f", prefx, *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_double(char **output, char *prefix,
|
||||
double *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -571,26 +716,35 @@ int pmix_bfrops_base_print_double(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_DOUBLE\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_DOUBLE\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_DOUBLE\tValue: %f", prefx, *src);
|
||||
ret = asprintf(output, "%sData type: PMIX_DOUBLE\tValue: %f", prefx, *src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_time(char **output, char *prefix,
|
||||
time_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
char *t;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -603,28 +757,37 @@ int pmix_bfrops_base_print_time(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_TIME\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_TIME\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
t = ctime(src);
|
||||
t[strlen(t)-1] = '\0'; // remove trailing newline
|
||||
|
||||
asprintf(output, "%sData type: PMIX_TIME\tValue: %s", prefx, t);
|
||||
ret = asprintf(output, "%sData type: PMIX_TIME\tValue: %s", prefx, t);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_timeval(char **output, char *prefix,
|
||||
struct timeval *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -637,26 +800,35 @@ int pmix_bfrops_base_print_timeval(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_TIMEVAL\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_TIMEVAL\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_TIMEVAL\tValue: %ld.%06ld", prefx,
|
||||
ret = asprintf(output, "%sData type: PMIX_TIMEVAL\tValue: %ld.%06ld", prefx,
|
||||
(long)src->tv_sec, (long)src->tv_usec);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_status(char **output, char *prefix,
|
||||
pmix_status_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -669,20 +841,28 @@ int pmix_bfrops_base_print_status(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_STATUS\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_STATUS\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_STATUS\tValue: %s", prefx, PMIx_Error_string(*src));
|
||||
ret = asprintf(output, "%sData type: PMIX_STATUS\tValue: %s", prefx, PMIx_Error_string(*src));
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* PRINT FUNCTIONS FOR GENERIC PMIX TYPES */
|
||||
@ -697,17 +877,26 @@ int pmix_bfrops_base_print_status(char **output, char *prefix,
|
||||
int rc;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) asprintf(&prefx, " ");
|
||||
else prefx = prefix;
|
||||
if (NULL == prefix) {
|
||||
if (0 > asprintf(&prefx, " ")) {
|
||||
return PMIX_ERR_NOMEM;
|
||||
}
|
||||
} else {
|
||||
prefx = prefix;
|
||||
}
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_VALUE\tValue: NULL pointer", prefx);
|
||||
rc = asprintf(output, "%sData type: PMIX_VALUE\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > rc) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
switch (src->type) {
|
||||
case PMIX_UNDEF:
|
||||
@ -838,31 +1027,41 @@ int pmix_bfrops_base_print_status(char **output, char *prefix,
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
return rc;
|
||||
if (0 > rc) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_info(char **output, char *prefix,
|
||||
pmix_info_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *tmp=NULL, *tmp2=NULL;
|
||||
int ret;
|
||||
|
||||
pmix_bfrops_base_print_value(&tmp, NULL, &src->value, PMIX_VALUE);
|
||||
pmix_bfrops_base_print_info_directives(&tmp2, NULL, &src->flags, PMIX_INFO_DIRECTIVES);
|
||||
asprintf(output, "%sKEY: %s\n%s\t%s\n%s\t%s", prefix, src->key,
|
||||
ret = asprintf(output, "%sKEY: %s\n%s\t%s\n%s\t%s", prefix, src->key,
|
||||
prefix, tmp2, prefix, tmp);
|
||||
free(tmp);
|
||||
free(tmp2);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_pdata(char **output, char *prefix,
|
||||
pmix_pdata_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *tmp1, *tmp2;
|
||||
int ret;
|
||||
|
||||
pmix_bfrops_base_print_proc(&tmp1, NULL, &src->proc, PMIX_PROC);
|
||||
pmix_bfrops_base_print_value(&tmp2, NULL, &src->value, PMIX_VALUE);
|
||||
asprintf(output, "%s %s KEY: %s %s", prefix, tmp1, src->key,
|
||||
ret = asprintf(output, "%s %s KEY: %s %s", prefix, tmp1, src->key,
|
||||
(NULL == tmp2) ? "NULL" : tmp2);
|
||||
if (NULL != tmp1) {
|
||||
free(tmp1);
|
||||
@ -870,8 +1069,12 @@ int pmix_bfrops_base_print_pdata(char **output, char *prefix,
|
||||
if (NULL != tmp2) {
|
||||
free(tmp2);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_buf(char **output, char *prefix,
|
||||
pmix_buffer_t *src, pmix_data_type_t type)
|
||||
@ -1082,6 +1285,7 @@ pmix_status_t pmix_bfrops_base_print_datatype(char **output, char *prefix,
|
||||
pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -1094,25 +1298,34 @@ pmix_status_t pmix_bfrops_base_print_datatype(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_DATA_TYPE\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_DATA_TYPE\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_DATA_TYPE\tValue: %s", prefx, PMIx_Data_type_string(*src));
|
||||
ret = asprintf(output, "%sData type: PMIX_DATA_TYPE\tValue: %s", prefx, PMIx_Data_type_string(*src));
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_bo(char **output, char *prefix,
|
||||
pmix_byte_object_t *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -1125,25 +1338,34 @@ int pmix_bfrops_base_print_bo(char **output, char *prefix,
|
||||
|
||||
/* if src is NULL, just print data type and return */
|
||||
if (NULL == src) {
|
||||
asprintf(output, "%sData type: PMIX_BYTE_OBJECT\tValue: NULL pointer", prefx);
|
||||
ret = asprintf(output, "%sData type: PMIX_BYTE_OBJECT\tValue: NULL pointer", prefx);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_BYTE_OBJECT\tSize: %ld", prefx, (long)src->size);
|
||||
ret = asprintf(output, "%sData type: PMIX_BYTE_OBJECT\tSize: %ld", prefx, (long)src->size);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
int pmix_bfrops_base_print_ptr(char **output, char *prefix,
|
||||
void *src, pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -1154,19 +1376,24 @@ int pmix_bfrops_base_print_ptr(char **output, char *prefix,
|
||||
prefx = prefix;
|
||||
}
|
||||
|
||||
asprintf(output, "%sData type: PMIX_POINTER\tAddress: %p", prefx, src);
|
||||
ret = asprintf(output, "%sData type: PMIX_POINTER\tAddress: %p", prefx, src);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
pmix_status_t pmix_bfrops_base_print_pstate(char **output, char *prefix,
|
||||
pmix_proc_state_t *src,
|
||||
pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -1177,16 +1404,18 @@ pmix_status_t pmix_bfrops_base_print_pstate(char **output, char *prefix,
|
||||
prefx = prefix;
|
||||
}
|
||||
|
||||
if (0 > asprintf(output, "%sData type: PMIX_PROC_STATE\tValue: %s",
|
||||
prefx, PMIx_Proc_state_string(*src))) {
|
||||
return PMIX_ERR_NOMEM;
|
||||
}
|
||||
ret = asprintf(output, "%sData type: PMIX_PROC_STATE\tValue: %s",
|
||||
prefx, PMIx_Proc_state_string(*src));
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
pmix_status_t pmix_bfrops_base_print_pinfo(char **output, char *prefix,
|
||||
pmix_proc_info_t *src,
|
||||
@ -1236,6 +1465,7 @@ pmix_status_t pmix_bfrops_base_print_darray(char **output, char *prefix,
|
||||
pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -1246,16 +1476,18 @@ pmix_status_t pmix_bfrops_base_print_darray(char **output, char *prefix,
|
||||
prefx = prefix;
|
||||
}
|
||||
|
||||
if (0 > asprintf(output, "%sData type: PMIX_DATA_ARRAY\tSize: %lu",
|
||||
prefx, (unsigned long)src->size)) {
|
||||
return PMIX_ERR_NOMEM;
|
||||
}
|
||||
ret = asprintf(output, "%sData type: PMIX_DATA_ARRAY\tSize: %lu",
|
||||
prefx, (unsigned long)src->size);
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
pmix_status_t pmix_bfrops_base_print_query(char **output, char *prefix,
|
||||
pmix_query_t *src,
|
||||
@ -1380,6 +1612,7 @@ pmix_status_t pmix_bfrops_base_print_alloc_directive(char **output, char *prefix
|
||||
pmix_data_type_t type)
|
||||
{
|
||||
char *prefx;
|
||||
int ret;
|
||||
|
||||
/* deal with NULL prefix */
|
||||
if (NULL == prefix) {
|
||||
@ -1390,16 +1623,18 @@ pmix_status_t pmix_bfrops_base_print_alloc_directive(char **output, char *prefix
|
||||
prefx = prefix;
|
||||
}
|
||||
|
||||
if (0 > asprintf(output, "%sData type: PMIX_ALLOC_DIRECTIVE\tValue: %s",
|
||||
prefx, PMIx_Alloc_directive_string(*src))) {
|
||||
return PMIX_ERR_NOMEM;
|
||||
}
|
||||
ret = asprintf(output, "%sData type: PMIX_ALLOC_DIRECTIVE\tValue: %s",
|
||||
prefx, PMIx_Alloc_directive_string(*src));
|
||||
if (prefx != prefix) {
|
||||
free(prefx);
|
||||
}
|
||||
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
} else {
|
||||
return PMIX_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**** DEPRECATED ****/
|
||||
|
@ -47,6 +47,7 @@
|
||||
|
||||
/* Instantiate the global vars */
|
||||
pmix_gds_globals_t pmix_gds_globals = {{{0}}};
|
||||
int pmix_gds_base_output = -1;
|
||||
|
||||
static pmix_status_t pmix_gds_close(void)
|
||||
{
|
||||
@ -74,13 +75,17 @@ static pmix_status_t pmix_gds_close(void)
|
||||
|
||||
static pmix_status_t pmix_gds_open(pmix_mca_base_open_flag_t flags)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
|
||||
/* initialize globals */
|
||||
pmix_gds_globals.initialized = true;
|
||||
pmix_gds_globals.all_mods = NULL;
|
||||
PMIX_CONSTRUCT(&pmix_gds_globals.actives, pmix_list_t);
|
||||
|
||||
/* Open up all available components */
|
||||
return pmix_mca_base_framework_components_open(&pmix_gds_base_framework, flags);
|
||||
rc = pmix_mca_base_framework_components_open(&pmix_gds_base_framework, flags);
|
||||
pmix_gds_base_output = pmix_gds_base_framework.framework_output;
|
||||
return rc;
|
||||
}
|
||||
|
||||
PMIX_MCA_BASE_FRAMEWORK_DECLARE(pmix, gds, "PMIx Generalized Data Store",
|
||||
|
@ -1945,7 +1945,7 @@ static pmix_status_t dstore_init(pmix_info_t info[], size_t ninfo)
|
||||
pmix_status_t rc;
|
||||
size_t n;
|
||||
char *dstor_tmpdir = NULL;
|
||||
size_t tbl_idx;
|
||||
size_t tbl_idx=0;
|
||||
ns_map_data_t *ns_map = NULL;
|
||||
|
||||
pmix_output_verbose(2, pmix_gds_base_framework.framework_output,
|
||||
@ -2679,7 +2679,7 @@ static pmix_status_t dstore_add_nspace(const char *nspace,
|
||||
size_t ninfo)
|
||||
{
|
||||
pmix_status_t rc;
|
||||
size_t tbl_idx;
|
||||
size_t tbl_idx=0;
|
||||
uid_t jobuid = _jobuid;
|
||||
char setjobuid = _setjobuid;
|
||||
size_t n;
|
||||
|
@ -46,6 +46,9 @@ BEGIN_C_DECLS
|
||||
struct pmix_peer_t;
|
||||
struct pmix_nspace_t;
|
||||
|
||||
/* backdoor to base verbosity */
|
||||
PMIX_EXPORT extern int pmix_gds_base_output;
|
||||
|
||||
/**
|
||||
* Initialize the module. Returns an error if the module cannot
|
||||
* run, success if it can.
|
||||
@ -83,6 +86,9 @@ typedef pmix_status_t (*pmix_gds_base_module_assemb_kvs_req_fn_t)(const pmix_pro
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
(s) = PMIX_SUCCESS; \
|
||||
if (NULL != _g->assemb_kvs_req) { \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS ASSEMBLE REQ WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->assemb_kvs_req(r, k, b, (void*)c); \
|
||||
} \
|
||||
} while(0)
|
||||
@ -97,6 +103,9 @@ typedef pmix_status_t (*pmix_gds_base_module_accept_kvs_resp_fn_t)(pmix_buffer_t
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
(s) = PMIX_SUCCESS; \
|
||||
if (NULL != _g->accept_kvs_resp) { \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS ACCEPT RESP WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->accept_kvs_resp(b); \
|
||||
} \
|
||||
} while (0)
|
||||
@ -115,6 +124,9 @@ typedef pmix_status_t (*pmix_gds_base_module_cache_job_info_fn_t)(struct pmix_ns
|
||||
#define PMIX_GDS_CACHE_JOB_INFO(s, p, n, i, ni) \
|
||||
do { \
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS CACHE JOB INFO WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->cache_job_info((struct pmix_nspace_t*)(n), (i), (ni)); \
|
||||
} while(0)
|
||||
|
||||
@ -153,6 +165,9 @@ typedef pmix_status_t (*pmix_gds_base_module_register_job_info_fn_t)(struct pmix
|
||||
#define PMIX_GDS_REGISTER_JOB_INFO(s, p, b) \
|
||||
do { \
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS REG JOB INFO WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->register_job_info((struct pmix_peer_t*)(p), b); \
|
||||
} while(0)
|
||||
|
||||
@ -169,6 +184,9 @@ typedef pmix_status_t (*pmix_gds_base_module_store_job_info_fn_t)(const char *ns
|
||||
#define PMIX_GDS_STORE_JOB_INFO(s, p, n, b) \
|
||||
do { \
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS STORE JOB INFO WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->store_job_info(n, b); \
|
||||
} while(0)
|
||||
|
||||
@ -199,6 +217,9 @@ typedef pmix_status_t (*pmix_gds_base_module_store_fn_t)(const pmix_proc_t *proc
|
||||
#define PMIX_GDS_STORE_KV(s, p, pc, sc, k) \
|
||||
do { \
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS STORE KV WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->store(pc, sc, k); \
|
||||
} while(0)
|
||||
|
||||
@ -237,7 +258,12 @@ typedef pmix_status_t (*pmix_gds_base_module_store_modex_fn_t)(struct pmix_nspac
|
||||
* b - pointer to pmix_byte_object_t containing the data
|
||||
*/
|
||||
#define PMIX_GDS_STORE_MODEX(r, n, l, b) \
|
||||
(r) = (n)->compat.gds->store_modex((struct pmix_nspace_t*)n, l, b)
|
||||
do { \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS STORE MODEX WITH %s", \
|
||||
__FILE__, __LINE__, (n)->compat.gds->name); \
|
||||
(r) = (n)->compat.gds->store_modex((struct pmix_nspace_t*)n, l, b); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* fetch value corresponding to provided key from within the defined
|
||||
@ -292,6 +318,9 @@ typedef pmix_status_t (*pmix_gds_base_module_fetch_fn_t)(const pmix_proc_t *proc
|
||||
#define PMIX_GDS_FETCH_KV(s, p, c) \
|
||||
do { \
|
||||
pmix_gds_base_module_t *_g = (p)->nptr->compat.gds; \
|
||||
pmix_output_verbose(1, pmix_gds_base_output, \
|
||||
"[%s:%d] GDS FETCH KV WITH %s", \
|
||||
__FILE__, __LINE__, _g->name); \
|
||||
(s) = _g->fetch((c)->proc, (c)->scope, (c)->copy, \
|
||||
(c)->key, (c)->info, (c)->ninfo, \
|
||||
&(c)->kvs); \
|
||||
|
@ -52,6 +52,8 @@ static void do_pdlopen(const char *fname, int flags,
|
||||
static int pdlopen_open(const char *fname, bool use_ext, bool private_namespace,
|
||||
pmix_pdl_handle_t **handle, char **err_msg)
|
||||
{
|
||||
int rc;
|
||||
|
||||
assert(handle);
|
||||
|
||||
*handle = NULL;
|
||||
@ -76,7 +78,10 @@ static int pdlopen_open(const char *fname, bool use_ext, bool private_namespace,
|
||||
ext = mca_pdl_pdlopen_component.filename_suffixes[++i]) {
|
||||
char *name;
|
||||
|
||||
asprintf(&name, "%s%s", fname, ext);
|
||||
rc = asprintf(&name, "%s%s", fname, ext);
|
||||
if (0 > rc) {
|
||||
return PMIX_ERR_NOMEM;
|
||||
}
|
||||
if (NULL == name) {
|
||||
return PMIX_ERR_IN_ERRNO;
|
||||
}
|
||||
@ -184,7 +189,10 @@ static int pdlopen_foreachfile(const char *search_path,
|
||||
|
||||
/* Make the absolute path name */
|
||||
char *abs_name = NULL;
|
||||
asprintf(&abs_name, "%s/%s", dirs[i], de->d_name);
|
||||
ret = asprintf(&abs_name, "%s/%s", dirs[i], de->d_name);
|
||||
if (0 > ret) {
|
||||
return PMIX_ERR_NOMEM;
|
||||
}
|
||||
if (NULL == abs_name) {
|
||||
ret = PMIX_ERR_IN_ERRNO;
|
||||
goto error;
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Copyright (c) 2007-2010 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2007 Sun Microsystem, Inc. All rights reserved.
|
||||
* Copyright (c) 2010 Sandia National Laboratories. All rights reserved.
|
||||
* Copyright (c) 2016 Intel, Inc. All rights reserved
|
||||
* Copyright (c) 2016-2017 Intel, Inc. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -33,18 +33,22 @@
|
||||
tmp = retval; \
|
||||
*start_pos = '\0'; \
|
||||
end_pos = start_pos + strlen("${" #fieldname "}"); \
|
||||
asprintf(&retval, "%s%s%s", tmp, \
|
||||
if (0 > asprintf(&retval, "%s%s%s", tmp, \
|
||||
pmix_pinstall_dirs.ompiname + destdir_offset, \
|
||||
end_pos); \
|
||||
end_pos)) { \
|
||||
pmix_output(0, "NOMEM"); \
|
||||
} \
|
||||
free(tmp); \
|
||||
changed = true; \
|
||||
} else if (NULL != (start_pos = strstr(retval, "@{" #fieldname "}"))) { \
|
||||
tmp = retval; \
|
||||
*start_pos = '\0'; \
|
||||
end_pos = start_pos + strlen("@{" #fieldname "}"); \
|
||||
asprintf(&retval, "%s%s%s", tmp, \
|
||||
if (0 > asprintf(&retval, "%s%s%s", tmp, \
|
||||
pmix_pinstall_dirs.ompiname + destdir_offset, \
|
||||
end_pos); \
|
||||
end_pos)) { \
|
||||
pmix_output(0, "NOMEM"); \
|
||||
} \
|
||||
free(tmp); \
|
||||
changed = true; \
|
||||
} \
|
||||
|
@ -115,7 +115,9 @@ static char* transports_print(uint64_t *unique_key)
|
||||
* number if the system has a different sized long (8 would be for
|
||||
* sizeof(int) == 4)).
|
||||
*/
|
||||
asprintf(&format, "%%0%dx", (int)(sizeof(unsigned int)) * 2);
|
||||
if (0 > asprintf(&format, "%%0%dx", (int)(sizeof(unsigned int)) * 2)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* print the first number */
|
||||
int_ptr = (unsigned int*) &unique_key[0];
|
||||
|
@ -559,8 +559,8 @@ static pmix_status_t setup_listener(pmix_info_t info[], size_t ninfo,
|
||||
goto sockerror;
|
||||
}
|
||||
|
||||
asprintf(<->uri, "%s.%d;%s%s:%d", pmix_globals.myid.nspace, pmix_globals.myid.rank, prefix, myconnhost, myport);
|
||||
if (NULL == lt->uri) {
|
||||
rc = asprintf(<->uri, "%s.%d;%s%s:%d", pmix_globals.myid.nspace, pmix_globals.myid.rank, prefix, myconnhost, myport);
|
||||
if (0 > rc || NULL == lt->uri) {
|
||||
CLOSE_THE_SOCKET(lt->socket);
|
||||
goto sockerror;
|
||||
}
|
||||
@ -753,7 +753,7 @@ static void connection_handler(int sd, short args, void *cbdata)
|
||||
pmix_pending_connection_t *pnd = (pmix_pending_connection_t*)cbdata;
|
||||
pmix_ptl_hdr_t hdr;
|
||||
pmix_peer_t *peer;
|
||||
pmix_rank_t rank;
|
||||
pmix_rank_t rank=0;
|
||||
pmix_status_t rc;
|
||||
char *msg, *mg, *version;
|
||||
char *sec, *bfrops, *gds;
|
||||
@ -949,7 +949,7 @@ static void connection_handler(int sd, short args, void *cbdata)
|
||||
proc_type = PMIX_PROC_V20;
|
||||
bfrops = "v20";
|
||||
bftype = pmix_bfrops_globals.default_type; // we can't know any better
|
||||
gds = "hash";
|
||||
gds = NULL;
|
||||
} else {
|
||||
proc_type = PMIX_PROC_V21;
|
||||
/* extract the name of the bfrops module they used */
|
||||
@ -1136,9 +1136,14 @@ static void connection_handler(int sd, short args, void *cbdata)
|
||||
peer->nptr->compat.type = bftype;
|
||||
|
||||
/* set the gds module to match this peer */
|
||||
if (NULL != gds) {
|
||||
PMIX_INFO_LOAD(&ginfo, PMIX_GDS_MODULE, gds, PMIX_STRING);
|
||||
free(msg); // can now release the data buffer
|
||||
peer->nptr->compat.gds = pmix_gds_base_assign_module(&ginfo, 1);
|
||||
PMIX_INFO_DESTRUCT(&ginfo);
|
||||
} else {
|
||||
peer->nptr->compat.gds = pmix_gds_base_assign_module(NULL, 0);
|
||||
}
|
||||
free(msg); // can now release the data buffer
|
||||
if (NULL == peer->nptr->compat.gds) {
|
||||
info->proc_cnt--;
|
||||
pmix_pointer_array_set_item(&pmix_server_globals.clients, peer->index, NULL);
|
||||
|
@ -128,6 +128,7 @@ static pmix_status_t connect_to_peer(struct pmix_peer_t *peer,
|
||||
/* must use the v12 bfrops module */
|
||||
pmix_globals.mypeer->nptr->compat.bfrops = pmix_bfrops_base_assign_module("v12");
|
||||
if (NULL == pmix_globals.mypeer->nptr->compat.bfrops) {
|
||||
pmix_argv_free(uri);
|
||||
return PMIX_ERR_INIT;
|
||||
}
|
||||
/* the server will be using the same */
|
||||
@ -515,11 +516,6 @@ void pmix_usock_send_handler(int sd, short flags, void *cbdata)
|
||||
msg->hdr.tag = ntohl(msg->hdr.tag);
|
||||
nbytes = msg->hdr.nbytes;
|
||||
msg->hdr.nbytes = ntohl(nbytes);
|
||||
} else {
|
||||
msg->hdr.pindex = msg->hdr.pindex;
|
||||
msg->hdr.tag = msg->hdr.tag;
|
||||
nbytes = msg->hdr.nbytes;
|
||||
msg->hdr.nbytes = nbytes;
|
||||
}
|
||||
pmix_output_verbose(2, pmix_ptl_base_framework.framework_output,
|
||||
"usock:send_handler SENDING HEADER WITH MSG IDX %d TAG %d SIZE %lu",
|
||||
|
@ -645,7 +645,7 @@ static pmix_status_t _satisfy_request(pmix_nspace_t *nptr, pmix_rank_t rank,
|
||||
PMIX_DESTRUCT(&cb);
|
||||
return rc;
|
||||
}
|
||||
if (PMIX_PROC_IS_V1(peer)) {
|
||||
if (PMIX_PROC_IS_V1(cd->peer)) {
|
||||
/* if the client is using v1, then it expects the
|
||||
* data returned to it in a different order than v2
|
||||
* - so we have to do a little gyration */
|
||||
|
@ -13,7 +13,7 @@
|
||||
* Copyright (c) 2010 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2012-2013 Los Alamos National Security, LLC.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2016 University of Houston. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
@ -401,7 +401,9 @@ char* pmix_find_absolute_path( char* app_name )
|
||||
|
||||
if( NULL != abs_app_name ) {
|
||||
char* resolved_path = (char*)malloc(PMIX_PATH_MAX);
|
||||
realpath( abs_app_name, resolved_path );
|
||||
if (NULL == realpath( abs_app_name, resolved_path )) {
|
||||
return NULL;
|
||||
}
|
||||
if( abs_app_name != app_name ) free(abs_app_name);
|
||||
return resolved_path;
|
||||
}
|
||||
|
@ -161,11 +161,15 @@ static int open_file(const char *base, const char *topic)
|
||||
filename = pmix_os_path( false, search_dirs[i], base, NULL );
|
||||
pmix_show_help_yyin = fopen(filename, "r");
|
||||
if (NULL == pmix_show_help_yyin) {
|
||||
asprintf(&err_msg, "%s: %s", filename, strerror(errno));
|
||||
if (0 > asprintf(&err_msg, "%s: %s", filename, strerror(errno))) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
base_len = strlen(base);
|
||||
if (4 > base_len || 0 != strcmp(base + base_len - 4, ".txt")) {
|
||||
free(filename);
|
||||
asprintf(&filename, "%s%s%s.txt", search_dirs[i], PMIX_PATH_SEP, base);
|
||||
if (0 > asprintf(&filename, "%s%s%s.txt", search_dirs[i], PMIX_PATH_SEP, base)) {
|
||||
return PMIX_ERR_OUT_OF_RESOURCE;
|
||||
}
|
||||
pmix_show_help_yyin = fopen(filename, "r");
|
||||
}
|
||||
}
|
||||
|
@ -218,10 +218,14 @@ void parse_cmd(int argc, char **argv, test_params *params)
|
||||
* <pmix-root-dir>/test/.libs/pmix_client
|
||||
* we need to do a step back in directory tree.
|
||||
*/
|
||||
asprintf(¶ms->binary, "%s/../pmix_client", argv[0]);
|
||||
if (0 > asprintf(¶ms->binary, "%s/../pmix_client", argv[0])) {
|
||||
exit(1);
|
||||
}
|
||||
*basename = '/';
|
||||
} else {
|
||||
asprintf(¶ms->binary, "pmix_client");
|
||||
if (0 > asprintf(¶ms->binary, "pmix_client")) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2015-2017 Intel, Inc. All rights reserved.
|
||||
* Copyright (c) 2015-2017 Mellanox Technologies, Inc.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2016 Research Organization for Information Science
|
||||
@ -250,7 +250,9 @@ int launch_clients(int num_procs, char *binary, char *** client_env, char ***bas
|
||||
if (cli_info[counter].pid == 0) {
|
||||
if( !TEST_VERBOSE_GET() ){
|
||||
// Hide clients stdout
|
||||
freopen("/dev/null","w", stdout);
|
||||
if (NULL == freopen("/dev/null","w", stdout)) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
execve(binary, client_argv, *client_env);
|
||||
/* Does not return */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user