1
1
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2017-09-06 13:15:24 -07:00
родитель 41c7230bc4
Коммит cbc114e923
25 изменённых файлов: 648 добавлений и 254 удалений

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

@ -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(&lt->uri, "%s.%d;%s%s:%d", pmix_globals.myid.nspace, pmix_globals.myid.rank, prefix, myconnhost, myport);
if (NULL == lt->uri) {
rc = asprintf(&lt->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(&params->binary, "%s/../pmix_client", argv[0]);
if (0 > asprintf(&params->binary, "%s/../pmix_client", argv[0])) {
exit(1);
}
*basename = '/';
} else {
asprintf(&params->binary, "pmix_client");
if (0 > asprintf(&params->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 */