Provided by: mpich-doc_3.3.2-2build1_all bug

NAME

       MPI_Grequest_start -  Create and return a user-defined request

SYNOPSIS

       int MPI_Grequest_start(MPI_Grequest_query_function * query_fn,
       MPI_Grequest_free_function * free_fn,
       MPI_Grequest_cancel_function * cancel_fn,
       void *extra_state, MPI_Request * request)

INPUT PARAMETERS

       query_fn
              - callback function invoked when request status is queried (function)
       free_fn
              - callback function invoked when request is freed (function)
       cancel_fn
              - callback function invoked when request is cancelled (function)
       extra_state
              - Extra state passed to the above functions.

OUTPUT PARAMETERS

       request
              - Generalized request (handle)

NOTES ON THE CALLBACK FUNCTIONS

       The  return  values  from the callback functions must be a valid MPI error code or class.  This value may
       either be the return value from any MPI routine (with one exception noted below) or any of the MPI  error
       classes.   For portable programs, MPI_ERR_OTHER may be used; to provide more specific information, create
       a new MPI error class or code with MPI_Add_error_class or MPI_Add_error_code and return that value.

       The MPI standard is not clear on the return values from the callback routines.  However, there are  notes
       in  the  standard that imply that these are MPI error codes.  For example, pages 169 line 46 through page
       170, line 1 require that the free_fn return an MPI error code that may be  used  in  the  MPI  completion
       functions when they return MPI_ERR_IN_STATUS .

       The  one  special  case  is  the error value returned by MPI_Comm_dup when the attribute callback routine
       returns a failure.  The MPI standard is not clear on what values may be used to indicate an error return.
       Further, the Intel MPI test suite made use of non-zero values to indicate  failure,  and  expected  these
       values  to  be returned by the MPI_Comm_dup when the attribute routines encountered an error.  Such error
       values may not be valid MPI error codes or classes.  Because of this, it is the user's responsibility  to
       either  use  valid MPI error codes in return from the attribute callbacks, if those error codes are to be
       returned by a generalized request callback, or to detect and convert those error codes to valid MPI error
       codes (recall that MPI error classes are valid error codes).

THREAD AND INTERRUPT SAFETY

       This routine is thread-safe.  This means that this routine may be safely used by multiple threads without
       the need for any user-provided thread locks.  However, the routine is  not  interrupt  safe.   Typically,
       this  is  due to the use of memory allocation routines such as malloc or other non-MPICH runtime routines
       that are themselves not interrupt-safe.

NOTES FOR FORTRAN

       All MPI routines in Fortran (except for MPI_WTIME and MPI_WTICK ) have an additional argument ierr at the
       end of the argument list.  ierr is an integer and has the same meaning as the return value of the routine
       in C.  In Fortran, MPI routines are subroutines, and are invoked with the call statement.

       All MPI objects (e.g., MPI_Datatype , MPI_Comm ) are of type INTEGER in Fortran.

ERRORS

       All MPI routines (except MPI_Wtime and MPI_Wtick ) return an error value; C routines as the value of  the
       function  and Fortran routines in the last argument.  Before the value is returned, the current MPI error
       handler is called.  By default, this error handler aborts the MPI job.  The error handler may be  changed
       with    MPI_Comm_set_errhandler   (for   communicators),   MPI_File_set_errhandler   (for   files),   and
       MPI_Win_set_errhandler (for RMA windows).  The MPI-1 routine MPI_Errhandler_set may be used but  its  use
       is  deprecated.   The  predefined error handler MPI_ERRORS_RETURN may be used to cause error values to be
       returned.  Note that MPI does not guarentee that an MPI program can continue past an error; however,  MPI
       implementations will attempt to continue whenever possible.

       MPI_SUCCESS
              - No error; MPI routine completed successfully.
       MPI_ERR_ARG
              -  Invalid  argument.   Some  argument  is invalid and is not identified by a specific error class
              (e.g., MPI_ERR_RANK ).

                                                   11/12/2019                              MPI_Grequest_start(3)