1
1
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2017-05-30 21:35:35 -07:00
родитель 6ff2780426
Коммит 26d96061aa
7 изменённых файлов: 156 добавлений и 75 удалений

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

@ -30,7 +30,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of
# "date<date>".
repo_rev=git1ce71dd
repo_rev=gitd5e4801
# 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="May 28, 2017"
date="May 30, 2017"
# The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library

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

@ -55,9 +55,9 @@ my $include_list;
my $exclude_list;
# Minimum versions
my $pmix_automake_version = "1.15.0";
my $pmix_automake_version = "1.13.4";
my $pmix_autoconf_version = "2.69";
my $pmix_libtool_version = "2.4.6";
my $pmix_libtool_version = "2.4.2";
# Search paths
my $pmix_autoconf_search = "autoconf";

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

@ -12,11 +12,11 @@ dnl Copyright (c) 2004-2006 The Regents of the University of California.
dnl All rights reserved.
dnl Copyright (c) 2007-2009 Sun Microsystems, Inc. All rights reserved.
dnl Copyright (c) 2008-2015 Cisco Systems, Inc. All rights reserved.
dnl Copyright (c) 2012 Los Alamos National Security, LLC. All rights
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
@ -38,7 +38,6 @@ AC_DEFUN([PMIX_SETUP_CC],[
AC_REQUIRE([AM_PROG_CC_C_O])
# We require a C99 compiant compiler
AC_PROG_CC_C99
# 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])
@ -322,7 +321,7 @@ AC_DEFUN([_PMIX_PROG_CC],[
#
PMIX_VAR_SCOPE_PUSH([pmix_cflags_save dummy pmix_cc_arvgv0])
pmix_cflags_save="$CFLAGS"
AC_PROG_CC
AC_PROG_CC_C99
BASECC="`basename $CC`"
CFLAGS="$pmix_cflags_save"
AC_DEFINE_UNQUOTED(PMIX_CC, "$CC", [PMIx underlying C compiler])

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

@ -12,7 +12,7 @@
# All rights reserved.
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved.
# Copyright (c) 2006-2011 Los Alamos National Security, LLC. All rights
# Copyright (c) 2006-2017 Los Alamos National Security, LLC. All rights
# reserved.
# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
# Copyright (c) 2011-2013 NVIDIA Corporation. All rights reserved.
@ -63,9 +63,9 @@ pmix_show_title "Configuring PMIx"
AC_CANONICAL_TARGET
# Init automake
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.12.2 -Wall -Werror])
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.13.4 -Wall -Werror])
# SILENT_RULES is new in AM 1.11, but we require 1.11 or higher via
# SILENT_RULES is new in AM 1.11, but we require 1.13.4 or higher via
# autogen. Limited testing shows that calling SILENT_RULES directly
# works in more cases than adding "silent-rules" to INIT_AUTOMAKE
# (even though they're supposed to be identical). Shrug.
@ -179,10 +179,6 @@ PMIX_DO_AM_CONDITIONALS
# Setup C compiler
####################################################################
CFLAGS_save="$CFLAGS"
AC_PROG_CC
CFLAGS="$CFLAGS_save"
AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
AS_IF([test -z "$CC_FOR_BUILD"],[
AC_SUBST([CC_FOR_BUILD], [$CC])

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

@ -157,10 +157,10 @@ static pmix_status_t notify_server_of_event(pmix_status_t status,
PMIX_INFO_XFER(&chain->info[n], &info[n]);
}
}
/* put the evhandler name tag in the next-to-last element - we
/* add the evhandler name tag - we
* will fill it in as each handler is called */
PMIX_INFO_LOAD(&chain->info[chain->ninfo-2], PMIX_EVENT_HDLR_NAME, NULL, PMIX_STRING);
/* now put the callback object tag in the last element */
/* now add the callback object tag */
PMIX_INFO_LOAD(&chain->info[chain->ninfo-1], PMIX_EVENT_RETURN_OBJECT, NULL, PMIX_POINTER);
/* we need to cache this event so we can pass it into
@ -324,15 +324,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
if (nxt->codes[0] == chain->status &&
check_range(&nxt->rng, &chain->source)) {
chain->evhdlr = nxt;
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
/* update the handler name in case they want to reference it */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[n].value.data.string) {
free(chain->info[n].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
/* update the evhdlr cbobject */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* add any cbobject - the info struct for it is at the end */
chain->info[chain->ninfo-1].value.data.ptr = nxt->cbobject;
nxt->evhdlr(nxt->index,
chain->status, &chain->source,
chain->info, chain->ninfo,
@ -364,15 +376,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
* the source fits within it */
if (nxt->codes[n] == chain->status) {
chain->evhdlr = nxt;
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
/* update the handler name in case they want to reference it */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[n].value.data.string) {
free(chain->info[n].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
/* update the evhdlr cbobject */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* add any cbobject - the info struct for it is at the end */
chain->info[chain->ninfo-1].value.data.ptr = nxt->cbobject;
nxt->evhdlr(nxt->index,
chain->status, &chain->source,
chain->info, chain->ninfo,
@ -398,15 +422,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
* the source fits within it */
if (check_range(&nxt->rng, &chain->source)) {
chain->evhdlr = nxt;
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
/* update the handler name in case they want to reference it */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[n].value.data.string) {
free(chain->info[n].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
/* update the evhdlr cbobject */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* add any cbobject - the info struct for it is at the end */
chain->info[chain->ninfo-1].value.data.ptr = nxt->cbobject;
nxt->evhdlr(nxt->index,
chain->status, &chain->source,
chain->info, chain->ninfo,
@ -425,15 +461,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
if (1 == pmix_globals.events.last->ncodes &&
pmix_globals.events.last->codes[0] == chain->status) {
chain->evhdlr = pmix_globals.events.last;
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
/* update the handler name in case they want to reference it */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[n].value.data.string) {
free(chain->info[n].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
/* update the evhdlr cbobject */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* add any cbobject - the info struct for it is at the end */
chain->info[chain->ninfo-1].value.data.ptr = pmix_globals.events.last->cbobject;
chain->evhdlr->evhdlr(chain->evhdlr->index,
chain->status, &chain->source,
chain->info, chain->ninfo,
@ -445,15 +493,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
for (n=0; n < pmix_globals.events.last->ncodes; n++) {
if (pmix_globals.events.last->codes[n] == chain->status) {
chain->evhdlr = pmix_globals.events.last;
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
/* update the handler name in case they want to reference it */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[n].value.data.string) {
free(chain->info[n].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
/* update the evhdlr cbobject */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* add any cbobject - the info struct for it is at the end */
chain->info[chain->ninfo-1].value.data.ptr = pmix_globals.events.last->cbobject;
chain->evhdlr->evhdlr(chain->evhdlr->index,
chain->status, &chain->source,
chain->info, chain->ninfo,
@ -465,15 +525,27 @@ static void progress_local_event_hdlr(pmix_status_t status,
} else {
/* gets run for all codes */
chain->evhdlr = pmix_globals.events.last;
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
/* update the handler name in case they want to reference it */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[n].value.data.string) {
free(chain->info[n].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
/* update the evhdlr cbobject */
for (n=0; n < chain->ninfo; n++) {
if (0 == strncmp(chain->info[n].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[n].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* add any cbobject - the info struct for it is at the end */
chain->info[chain->ninfo-1].value.data.ptr = pmix_globals.events.last->cbobject;
chain->evhdlr->evhdlr(chain->evhdlr->index,
chain->status, &chain->source,
chain->info, chain->ninfo,
@ -642,15 +714,28 @@ void pmix_invoke_local_event_hdlr(pmix_event_chain_t *chain)
invk:
/* update the handler name in case they want to reference it */
for (i=0; i < chain->ninfo; i++) {
if (0 == strncmp(chain->info[i].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
if (NULL != chain->info[i].value.data.string) {
free(chain->info[i].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[i].value.data.string = strdup(chain->evhdlr->name);
}
break;
}
}
/* update the evhdlr cbobject */
for (i=0; i < chain->ninfo; i++) {
if (0 == strncmp(chain->info[i].key, PMIX_EVENT_RETURN_OBJECT, PMIX_MAX_KEYLEN)) {
if (NULL != chain->evhdlr->name) {
chain->info[i].value.data.ptr = chain->evhdlr->cbobject;
}
break;
}
}
/* invoke the handler */
/* add the handler name in case they want to reference it */
if (NULL != chain->info[chain->ninfo-2].value.data.string) {
free(chain->info[chain->ninfo-2].value.data.string);
}
if (NULL != chain->evhdlr->name) {
chain->info[chain->ninfo-2].value.data.string = strdup(chain->evhdlr->name);
}
chain->info[chain->ninfo-1].value.data.ptr = chain->evhdlr->cbobject;
pmix_output_verbose(2, pmix_globals.debug_output,
"[%s:%d] INVOKING EVHDLR %s", __FILE__, __LINE__,
(NULL == chain->evhdlr->name) ?

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

@ -13,7 +13,7 @@
* All rights reserved.
* Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2011 Oak Ridge National Labs. All rights reserved.
* Copyright (c) 2013-2016 Intel, Inc. All rights reserved.
* Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
* Copyright (c) 2015 Mellanox Technologies, Inc. All rights reserved.
* $COPYRIGHT$
*
@ -114,13 +114,14 @@ int main(int argc, char **argv)
PMIx_Abort(PMIX_ERR_OUT_OF_RESOURCE, "Eat rocks",
&proc, 1);
pmix_output(0, "Client ns %s rank %d: Abort called", myproc.nspace, myproc.rank);
}
} else {
/* everyone simply waits */
while (!completed) {
struct timespec ts;
ts.tv_sec = 0;
ts.tv_nsec = 100000;
nanosleep(&ts, NULL);
while (!completed) {
struct timespec ts;
ts.tv_sec = 0;
ts.tv_nsec = 100000;
nanosleep(&ts, NULL);
}
}
done:

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

@ -216,7 +216,7 @@ static void model_callback(size_t evhdlr_registration_id,
/* just let us know it was received */
fprintf(stderr, "Model event handler called with status %d(%s)\n", status, PMIx_Error_string(status));
for (n=0; n < ninfo; n++) {
if (PMIX_STRING == info[n].value.type) {
if (0 == strncmp(info[n].key, PMIX_EVENT_HDLR_NAME, PMIX_MAX_KEYLEN)) {
fprintf(stderr, "\t%s:\t%s\n", info[n].key, info[n].value.data.string);
}
}