1
1

Fixes trac:2060: MPI-2.2 ticket 7, convert some function pointer typedefs

from "MPI_*_errhandler_fn" to "MPI_*_errhandler_function" (and their
corresponding C++ types, too).  Also updated the corresponding man
pages, and marked the typedefs to the now-deprecated types as
deprecated.

This commit was SVN r22122.

The following Trac tickets were found above:
  Ticket 2060 --> https://svn.open-mpi.org/trac/ompi/ticket/2060
Этот коммит содержится в:
Jeff Squyres 2009-10-22 16:50:45 +00:00
родитель 8f01bd4c8e
Коммит c78df0d1b4
15 изменённых файлов: 102 добавлений и 61 удалений

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

@ -10,7 +10,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
* $COPYRIGHT$
*
@ -213,13 +213,13 @@ ompi_errhandler_t *ompi_errhandler_create(ompi_errhandler_type_t object_type,
new_errhandler->eh_lang = lang;
switch (object_type ) {
case (OMPI_ERRHANDLER_TYPE_COMM):
new_errhandler->eh_comm_fn = (MPI_Comm_errhandler_fn *)func;
new_errhandler->eh_comm_fn = (MPI_Comm_errhandler_function *)func;
break;
case (OMPI_ERRHANDLER_TYPE_FILE):
new_errhandler->eh_file_fn = (ompi_file_errhandler_fn *)func;
break;
case (OMPI_ERRHANDLER_TYPE_WIN):
new_errhandler->eh_win_fn = (MPI_Win_errhandler_fn *)func;
new_errhandler->eh_win_fn = (MPI_Win_errhandler_function *)func;
break;
default:
break;

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

@ -10,7 +10,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2009 Sun Microsystems, Inc. All rights reserved.
* $COPYRIGHT$
*
@ -109,9 +109,9 @@ struct ompi_errhandler_t {
(vs., for example, a union) because the predefined errhandlers
can be invoked on any MPI object type, so we need callbacks for
all of three. */
MPI_Comm_errhandler_fn *eh_comm_fn;
MPI_Comm_errhandler_function *eh_comm_fn;
ompi_file_errhandler_fn *eh_file_fn;
MPI_Win_errhandler_fn *eh_win_fn;
MPI_Win_errhandler_function *eh_win_fn;
ompi_errhandler_fortran_handler_fn_t *eh_fort_fn;
/* Have separate callback for C++ errhandlers. This pointer is

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

@ -342,19 +342,26 @@ typedef int (MPI_Delete_function)(MPI_Comm, int, void *, void *);
typedef int (MPI_Datarep_extent_function)(MPI_Datatype, MPI_Aint *, void *);
typedef int (MPI_Datarep_conversion_function)(void *, MPI_Datatype,
int, void *, MPI_Offset, void *);
typedef void (MPI_Comm_errhandler_fn)(MPI_Comm *, int *, ...);
typedef void (MPI_Comm_errhandler_function)(MPI_Comm *, int *, ...);
typedef MPI_Comm_errhandler_function MPI_Comm_errhandler_fn
__mpi_interface_deprecated__("MPI_Comm_errhandler_fn was deprecated in MPI-2.2; use MPI_Comm_errhandler_function instead");
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
/* This is a little hackish, but errhandler.h needs space for a
MPI_File_errhandler_fn. While it could just be removed, this
allows us to maintain a stable ABI within OMPI, at least for
apps that don't use MPI I/O. */
typedef void (ompi_file_errhandler_fn)(MPI_File *, int *, ...);
typedef ompi_file_errhandler_fn MPI_File_errhandler_fn;
typedef ompi_file_errhandler_fn MPI_File_errhandler_fn
__mpi_interface_deprecated__("MPI_File_errhandler_fn was deprecated in MPI-2.2; use MPI_File_errhandler_function instead");
typedef ompi_file_errhandler_fn MPI_File_errhandler_function;
#else
struct ompi_file_t;
typedef void (ompi_file_errhandler_fn)(struct ompi_file_t**, int *, ...);
#endif
typedef void (MPI_Win_errhandler_fn)(MPI_Win *, int *, ...);
typedef void (MPI_Win_errhandler_function)(MPI_Win *, int *, ...);
typedef MPI_Win_errhandler_function MPI_Win_errhandler_fn
__mpi_interface_deprecated__("MPI_Win_errhandler_fn was deprecated in MPI-2.2; use MPI_Win_errhandler_function instead");
/* MPI_Handler_function is deprecated, but we don't mark it as
such because otherwise the MPI_Errhandler_create() declaration
would cause a warning to be issued */
@ -1020,7 +1027,7 @@ OMPI_DECLSPEC int MPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
OMPI_DECLSPEC int MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result);
OMPI_DECLSPEC int MPI_Comm_connect(char *port_name, MPI_Info info, int root,
MPI_Comm comm, MPI_Comm *newcomm);
OMPI_DECLSPEC int MPI_Comm_create_errhandler(MPI_Comm_errhandler_fn *function,
OMPI_DECLSPEC int MPI_Comm_create_errhandler(MPI_Comm_errhandler_function *function,
MPI_Errhandler *errhandler);
OMPI_DECLSPEC int MPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn,
MPI_Comm_delete_attr_function *comm_delete_attr_fn,
@ -1074,7 +1081,7 @@ OMPI_DECLSPEC int MPI_Exscan(void *sendbuf, void *recvbuf, int count,
OMPI_DECLSPEC MPI_Fint MPI_File_c2f(MPI_File file);
OMPI_DECLSPEC MPI_File MPI_File_f2c(MPI_Fint file);
OMPI_DECLSPEC int MPI_File_call_errhandler(MPI_File fh, int errorcode);
OMPI_DECLSPEC int MPI_File_create_errhandler(MPI_File_errhandler_fn *function,
OMPI_DECLSPEC int MPI_File_create_errhandler(MPI_File_errhandler_function *function,
MPI_Errhandler *errhandler);
OMPI_DECLSPEC int MPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler);
OMPI_DECLSPEC int MPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler);
@ -1450,7 +1457,7 @@ OMPI_DECLSPEC int MPI_Win_call_errhandler(MPI_Win win, int errorcode);
OMPI_DECLSPEC int MPI_Win_complete(MPI_Win win);
OMPI_DECLSPEC int MPI_Win_create(void *base, MPI_Aint size, int disp_unit,
MPI_Info info, MPI_Comm comm, MPI_Win *win);
OMPI_DECLSPEC int MPI_Win_create_errhandler(MPI_Win_errhandler_fn *function,
OMPI_DECLSPEC int MPI_Win_create_errhandler(MPI_Win_errhandler_function *function,
MPI_Errhandler *errhandler);
OMPI_DECLSPEC int MPI_Win_create_keyval(MPI_Win_copy_attr_function *win_copy_attr_fn,
MPI_Win_delete_attr_function *win_delete_attr_fn,
@ -1545,7 +1552,7 @@ OMPI_DECLSPEC int PMPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
OMPI_DECLSPEC int PMPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result);
OMPI_DECLSPEC int PMPI_Comm_connect(char *port_name, MPI_Info info, int root,
MPI_Comm comm, MPI_Comm *newcomm);
OMPI_DECLSPEC int PMPI_Comm_create_errhandler(MPI_Comm_errhandler_fn *function,
OMPI_DECLSPEC int PMPI_Comm_create_errhandler(MPI_Comm_errhandler_function *function,
MPI_Errhandler *errhandler);
OMPI_DECLSPEC int PMPI_Comm_create_keyval(MPI_Comm_copy_attr_function *comm_copy_attr_fn,
MPI_Comm_delete_attr_function *comm_delete_attr_fn,
@ -1599,7 +1606,7 @@ OMPI_DECLSPEC int PMPI_Exscan(void *sendbuf, void *recvbuf, int count,
OMPI_DECLSPEC MPI_Fint PMPI_File_c2f(MPI_File file);
OMPI_DECLSPEC MPI_File PMPI_File_f2c(MPI_Fint file);
OMPI_DECLSPEC int PMPI_File_call_errhandler(MPI_File fh, int errorcode);
OMPI_DECLSPEC int PMPI_File_create_errhandler(MPI_File_errhandler_fn *function,
OMPI_DECLSPEC int PMPI_File_create_errhandler(MPI_File_errhandler_function *function,
MPI_Errhandler *errhandler);
OMPI_DECLSPEC int PMPI_File_set_errhandler( MPI_File file, MPI_Errhandler errhandler);
OMPI_DECLSPEC int PMPI_File_get_errhandler( MPI_File file, MPI_Errhandler *errhandler);
@ -1976,7 +1983,7 @@ OMPI_DECLSPEC int PMPI_Win_call_errhandler(MPI_Win win, int errorcode);
OMPI_DECLSPEC int PMPI_Win_complete(MPI_Win win);
OMPI_DECLSPEC int PMPI_Win_create(void *base, MPI_Aint size, int disp_unit,
MPI_Info info, MPI_Comm comm, MPI_Win *win);
OMPI_DECLSPEC int PMPI_Win_create_errhandler(MPI_Win_errhandler_fn *function,
OMPI_DECLSPEC int PMPI_Win_create_errhandler(MPI_Win_errhandler_function *function,
MPI_Errhandler *errhandler);
OMPI_DECLSPEC int PMPI_Win_create_keyval(MPI_Win_copy_attr_function *win_copy_attr_fn,
MPI_Win_delete_attr_function *win_delete_attr_fn,

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

@ -9,7 +9,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -36,7 +36,7 @@
static const char FUNC_NAME[] = "MPI_Comm_create_errhandler";
int MPI_Comm_create_errhandler(MPI_Comm_errhandler_fn *function,
int MPI_Comm_create_errhandler(MPI_Comm_errhandler_function *function,
MPI_Errhandler *errhandler)
{
int err = MPI_SUCCESS;

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

@ -9,7 +9,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -36,7 +36,7 @@
static const char FUNC_NAME[] = "MPI_File_create_errhandler";
int MPI_File_create_errhandler(MPI_File_errhandler_fn *function,
int MPI_File_create_errhandler(MPI_File_errhandler_function *function,
MPI_Errhandler *errhandler) {
int err = MPI_SUCCESS;

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

@ -9,7 +9,7 @@
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -36,7 +36,7 @@
static const char FUNC_NAME[] = "MPI_Win_create_errhandler";
int MPI_Win_create_errhandler(MPI_Win_errhandler_fn *function,
int MPI_Win_create_errhandler(MPI_Win_errhandler_function *function,
MPI_Errhandler *errhandler)
{
int err = MPI_SUCCESS;

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

@ -10,7 +10,7 @@
// University of Stuttgart. All rights reserved.
// Copyright (c) 2004-2005 The Regents of the University of California.
// All rights reserved.
// Copyright (c) 2006-2008 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
// $COPYRIGHT$
//
// Additional copyrights may follow
@ -96,7 +96,9 @@ protected:
class Comm : public Comm_Null {
public:
typedef void Errhandler_fn(Comm&, int*, ...);
typedef void Errhandler_function(Comm&, int*, ...);
typedef Errhandler_function Errhandler_fn
__mpi_interface_deprecated__("MPI::Comm::Errhandler_fn was deprecated in MPI-2.2; use MPI::Comm::Errhandler_function instead");
typedef int Copy_attr_function(const Comm& oldcomm, int comm_keyval,
void* extra_state, void* attribute_val_in,
void* attribute_val_out,
@ -105,7 +107,7 @@ public:
void* attribute_val,
void* extra_state);
#if !0 /* OMPI_ENABLE_MPI_PROFILING */
#define _MPI2CPP_ERRHANDLERFN_ Errhandler_fn
#define _MPI2CPP_ERRHANDLERFN_ Errhandler_function
#define _MPI2CPP_COPYATTRFN_ Copy_attr_function
#define _MPI2CPP_DELETEATTRFN_ Delete_attr_function
#endif
@ -380,7 +382,7 @@ public:
// Errhandler
//
static Errhandler Create_errhandler(Comm::Errhandler_fn* function);
static Errhandler Create_errhandler(Comm::Errhandler_function* function);
virtual void Set_errhandler(const Errhandler& errhandler) const;

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

@ -2,7 +2,7 @@
//
// Copyright (c) 2006 Los Alamos National Security, LLC. All rights
// reserved.
// Copyright (c) 2007-2008 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2007-2009 Cisco Systems, Inc. All rights reserved.
// $COPYRIGHT$
//
// Additional copyrights may follow
@ -29,7 +29,7 @@ MPI::File::Close()
MPI::Errhandler
MPI::File::Create_errhandler(MPI::File::Errhandler_fn* function)
MPI::File::Create_errhandler(MPI::File::Errhandler_function* function)
{
MPI_Errhandler c_errhandler =
ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_FILE,

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

@ -10,7 +10,7 @@
// University of Stuttgart. All rights reserved.
// Copyright (c) 2004-2005 The Regents of the University of California.
// All rights reserved.
// Copyright (c) 2006-2008 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
// $COPYRIGHT$
//
// Additional copyrights may follow
@ -293,9 +293,11 @@ public:
//
// Errhandler
//
typedef void Errhandler_fn(MPI::File &, int *, ... );
typedef void Errhandler_function(MPI::File &, int *, ... );
typedef Errhandler_function Errhandler_fn
__mpi_interface_deprecated__("MPI::File::Errhandler_fn was deprecated in MPI-2.2; use MPI::File::Errhandler_function instead");
static MPI::Errhandler Create_errhandler(Errhandler_fn* function);
static MPI::Errhandler Create_errhandler(Errhandler_function* function);
MPI::Errhandler Get_errhandler() const;

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

@ -10,7 +10,7 @@
// University of Stuttgart. All rights reserved.
// Copyright (c) 2004-2005 The Regents of the University of California.
// All rights reserved.
// Copyright (c) 2006-2008 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
// $COPYRIGHT$
//
@ -101,8 +101,8 @@ void ompi_mpi_cxx_comm_errhandler_invoke(ompi_errhandler_t *c_errhandler,
// those. So fake it by instantiating an MPI::Intracomm and then
// casting it down to an (MPI::Comm&) when invoking the callback.
MPI::Intracomm cxx_comm(*c_comm);
MPI::Comm::Errhandler_fn *cxx_fn =
(MPI::Comm::Errhandler_fn*) c_errhandler->eh_comm_fn;
MPI::Comm::Errhandler_function *cxx_fn =
(MPI::Comm::Errhandler_function*) c_errhandler->eh_comm_fn;
cxx_fn((MPI::Comm&) cxx_comm, err, message);
}
@ -117,8 +117,8 @@ void ompi_mpi_cxx_file_errhandler_invoke(ompi_errhandler_t *c_errhandler,
const char *message)
{
MPI::File cxx_file(*c_file);
MPI::File::Errhandler_fn *cxx_fn =
(MPI::File::Errhandler_fn*) c_errhandler->eh_file_fn;
MPI::File::Errhandler_function *cxx_fn =
(MPI::File::Errhandler_function*) c_errhandler->eh_file_fn;
cxx_fn(cxx_file, err, message);
}
@ -133,8 +133,8 @@ void ompi_mpi_cxx_win_errhandler_invoke(ompi_errhandler_t *c_errhandler,
const char *message)
{
MPI::Win cxx_win(*c_win);
MPI::Win::Errhandler_fn *cxx_fn =
(MPI::Win::Errhandler_fn*) c_errhandler->eh_win_fn;
MPI::Win::Errhandler_function *cxx_fn =
(MPI::Win::Errhandler_function*) c_errhandler->eh_win_fn;
cxx_fn(cxx_win, err, message);
}

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

@ -3,7 +3,7 @@
// Copyright (c) 2006 Los Alamos National Security, LLC. All rights
// reserved.
// Copyright (c) 2007-2008 Sun Microsystems, Inc. All rights reserved.
// Copyright (c) 2007-2008 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2007-2009 Cisco Systems, Inc. All rights reserved.
// $COPYRIGHT$
//
// Additional copyrights may follow
@ -29,7 +29,7 @@ MPI::Win::Free()
// This function needs some internal OMPI types, so it's not inlined
MPI::Errhandler
MPI::Win::Create_errhandler(MPI::Win::Errhandler_fn* function)
MPI::Win::Create_errhandler(MPI::Win::Errhandler_function* function)
{
MPI_Errhandler c_errhandler =
ompi_errhandler_create(OMPI_ERRHANDLER_TYPE_WIN,

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

@ -10,7 +10,7 @@
// University of Stuttgart. All rights reserved.
// Copyright (c) 2004-2005 The Regents of the University of California.
// All rights reserved.
// Copyright (c) 2006-2008 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved.
// Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
// $COPYRIGHT$
//
@ -85,12 +85,14 @@ public:
typedef int Delete_attr_function(Win& win, int win_keyval,
void* attribute_val, void* extra_state);
typedef void Errhandler_fn(Win &, int *, ... );
typedef void Errhandler_function(Win &, int *, ... );
typedef Errhandler_function Errhandler_fn
__mpi_interface_deprecated__("MPI::Win::Errhandler_fn was deprecated in MPI-2.2; use MPI::Win::Errhandler_function instead");
//
// Errhandler
//
static MPI::Errhandler Create_errhandler(Errhandler_fn* function);
static MPI::Errhandler Create_errhandler(Errhandler_function* function);
virtual void Set_errhandler(const MPI::Errhandler& errhandler) const;

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

@ -1,3 +1,4 @@
.\"Copyright 2009 Cisco Systems, Inc.
.\"Copyright 2006-2008 Sun Microsystems, Inc.
.\" Copyright (c) 1996 Thinking Machines Corporation
.TH MPI_Comm_create_errhandler 3 "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
@ -9,7 +10,7 @@
.SH C Syntax
.nf
#include <mpi.h>
int MPI_Comm_create_errhandler(MPI_Comm_errhandler_fn \fI*function\fP,
int MPI_Comm_create_errhandler(MPI_Comm_errhandler_function \fI*function\fP,
MPI_Errhandler *\fIerrhandler\fP)
.SH Fortran Syntax
@ -23,9 +24,17 @@ MPI_COMM_CREATE_ERRHANDLER(\fIFUNCTION, ERRHANDLER, IERROR\fP)
.nf
#include <mpi.h>
static MPI::Errhandler
MPI::Comm::Create_errhandler(MPI::Comm::Errhandler_fn*
MPI::Comm::Create_errhandler(MPI::Comm::Errhandler_function*
\fIfunction\fP)
.SH DEPRECATED TYPE NAME NOTE
.ft R
MPI-2.2 deprecated the MPI_Comm_errhandler_fn and
MPI::Comm::Errhandler_fn types in favor of
MPI_Comm_errhandler_function and MPI::Comm::Errhandler_function,
respectively. Open MPI supports both names (indeed, the _fn names are
typedefs to the _function names).
.SH INPUT PARAMETER
.ft R
.TP 1i
@ -46,10 +55,10 @@ Fortran only: Error status (integer).
.ft R
MPI_Comm_create_errhandler creates an error handler that can be attached to communicators. This function is identical to MPI_Errhandler_create, the use of which is deprecated.
.sp
In C, the user routine should be a function of type MPI_Comm_errhandler_fn, which is defined as
In C, the user routine should be a function of type MPI_Comm_errhandler_function, which is defined as
.sp
.nf
typedef void MPI_Comm_errhandler_fn(MPI_Comm *, int *, \&...);
typedef void MPI_Comm_errhandler_function(MPI_Comm *, int *, \&...);
.fi
.sp
The first argument is the communicator in use. The second is the error code
@ -58,14 +67,14 @@ to be returned by the MPI routine that raised the error. This typedef replaces M
In Fortran, the user routine should be of this form:
.sp
.nf
SUBROUTINE COMM_ERRHANDLER_FN(COMM, ERROR_CODE, \&...)
SUBROUTINE COMM_ERRHANDLER_FUNCTION(COMM, ERROR_CODE, \&...)
INTEGER COMM, ERROR_CODE
.fi
.sp
In C++, the user routine should be of this form:
.sp
.nf
typedef void MPI::Comm::Errhandler_fn(MPI_Comm &, int *, \&...);
typedef void MPI::Comm::Errhandler_function(MPI_Comm &, int *, \&...);
.fi
.SH ERRORS

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

@ -1,3 +1,4 @@
.\"Copyright 2009 Cisco Systems, Inc.
.\"Copyright 2006-2008 Sun Microsystems, Inc.
.\" Copyright (c) 1996 Thinking Machines Corporation
.TH MPI_File_create_errhandler 3 "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
@ -9,7 +10,7 @@
.SH C Syntax
.nf
#include <mpi.h>
int MPI_File_create_errhandler(MPI_File_errhandler_fn \fI*function\fP,
int MPI_File_create_errhandler(MPI_File_errhandler_function \fI*function\fP,
MPI_Errhandler \fI*errhandler\fP)
.SH Fortran Syntax
@ -20,11 +21,20 @@ MPI_FILE_CREATE_ERRHANDLER(\fIFUNCTION, ERRHANDLER, IERROR\fP)
INTEGER \fIERRHANDLER, IERROR\fP
.SH C++ Syntax
.nf
#include <mpi.h>
static MPI::Errhandler
MPI::File::Create_errhandler(MPI::File::Errhandler_fn*
MPI::File::Create_errhandler(MPI::File::Errhandler_function*
\fIfunction\fP)
.SH DEPRECATED TYPE NAME NOTE
.ft R
MPI-2.2 deprecated the MPI_File_errhandler_fn and
MPI::file::Errhandler_fn types in favor of
MPI_File_errhandler_function and MPI::File::Errhandler_function,
respectively. Open MPI supports both names (indeed, the _fn names are
typedefs to the _function names).
.SH INPUT PARAMETER
.ft R
.TP 1i
@ -45,10 +55,10 @@ Fortran only: Error status (integer).
.ft R
Registers the user routine \fIfunction\fP for use as an MPI exception handler. Returns in errhandler a handle to the registered exception handler.
.sp
In the C language, the user routine \fIfunction\fP should be a C function of type MPI_File_errhandler_fn, which is defined as
In the C language, the user routine \fIfunction\fP should be a C function of type MPI_File_errhandler_function, which is defined as
.sp
.nf
typedef void (MPI_File_errhandler_fn)(MPI_File *, int *,
typedef void (MPI_File_errhandler_function)(MPI_File *, int *,
\&...);
.fi
.sp
@ -58,14 +68,14 @@ to be returned by the MPI routine that raised the error.
In the Fortran language, the user routine should be of the form:
.sp
.nf
SUBROUTINE FILE_ERRHANDLER_FN(FILE, ERROR_CODE, ...)
SUBROUTINE FILE_ERRHANDLER_FUNCTION(FILE, ERROR_CODE, ...)
INTEGER FILE, ERROR_CODE
.fi
.sp
In C++, the user routine \fIfunction\fP should be of the form:
.sp
.nf
typedef void MPI::File::Errhandler_fn(MPI::File &, int *,
typedef void MPI::File::Errhandler_function(MPI::File &, int *,
...);
.fi
.sp

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

@ -1,3 +1,4 @@
.\"Copyright 2009 Cisco Systems, Inc.
.\"Copyright 2006-2008 Sun Microsystems, Inc.
.\" Copyright (c) 1996 Thinking Machines Corporation
.TH MPI_Win_create_errhandler 3 "#OMPI_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
@ -9,7 +10,7 @@
.SH C Syntax
.nf
#include <mpi.h>
int MPI_Win_create_errhandler(MPI_Win_errhandler_fn *\fIfunction\fP,
int MPI_Win_create_errhandler(MPI_Win_errhandler_function *\fIfunction\fP,
MPI_Errhandler *\fIerrhandler\fP)
.SH Fortran Syntax
@ -23,7 +24,15 @@ MPI_WIN_CREATE_ERRHANDLER(\fIFUNCTION, ERRHANDLER, IERROR\fP)
.nf
#include <mpi.h>
static MPI::Errhandler MPI::Win::Create_errhandler(MPI::Win::
Errhandler_fn* \fIfunction\fP)
errhandler_function* \fIfunction\fP)
.SH DEPRECATED TYPE NAME NOTE
.ft R
MPI-2.2 deprecated the MPI_Win_errhandler_fn and
MPI::Win::Errhandler_fn types in favor of
MPI_Win_errhandler_function and MPI::Win::Errhandler_function,
respectively. Open MPI supports both names (indeed, the _fn names are
typedefs to the _function names).
.SH INPUT PARAMETER
.ft R
@ -42,10 +51,10 @@ Fortran only: Error status (integer).
.SH DESCRIPTION
.ft R
MPI_Win_create_errhandler should be, in C, a function of type MPI_Win_errhandler_fn, which is defined as
MPI_Win_create_errhandler should be, in C, a function of type MPI_Win_errhandler_function, which is defined as
.sp
.nf
typedef void MPI_Win_errhandler_fn(MPI Win *, int *, ...);
typedef void MPI_Win_errhandler_function(MPI Win *, int *, ...);
.fi
.sp
The first argument is the window in use, the second is the error code to be returned.
@ -53,19 +62,19 @@ The first argument is the window in use, the second is the error code to be retu
In Fortran, the user routine should be of the form:
.sp
.nf
SUBROUTINE WIN_ERRHANDLER_FN(WIN, ERROR_CODE, ...)
SUBROUTINE WIN_ERRHANDLER_FUNCTION(WIN, ERROR_CODE, ...)
INTEGER WIN, ERROR_CODE
.fi
.sp
In C++, the user routine should be of the form:
.sp
.nf
typedef void MPI::Win::Errhandler_fn(MPI::Win &, int *, ...);
typedef void MPI::Win::errhandler_function(MPI::Win &, int *, ...);
.fi
.SH ERRORS
Almost all MPI routines return an error value; C routines as the value of the function and Fortran routines in the last argument. C++ functions do not return errors. If the default error handler is set to MPI::ERRORS_THROW_EXCEPTIONS, then on error the C++ exception mechanism will be used to throw an MPI:Exception object.
.sp
Before the error value is returned, the current MPI error handler is
called. By default, this error handler aborts the MPI job, except for I/O function errors. The error handler may be changed with MPI_Comm_set_errhandler; the predefined error handler MPI_ERRORS_RETURN may be used to cause error values to be returned. Note that MPI does not guarantee that an MPI program can continue past an error.
called. By default, this error handler aborts the MPI job, except for I/O function errors. The error handler may be changed with MPI_Win_set_errhandler; the predefined error handler MPI_ERRORS_RETURN may be used to cause error values to be returned. Note that MPI does not guarantee that an MPI program can continue past an error.