More requirements from external for I/O layerability

Leslie Hart (hart@nipmuc.fsl.noaa.gov)
Tue, 2 Jul 1996 11:16:10 -0600 (MDT)

It is the desire of the MPI-IO subcommittee to allow layerable implementations.
I have come up with what I believe are two additional requirements from the
external interfaces subcommittee to allow for layerability. If others agree,
I can flesh out the proposal and TeX-ize it.

Leslie Hart
NOAA/FSL (hart@fsl.noaa.gov)

1) We have to be able to raise error handlers within an implementation.
I propose:

MPI_Raise_error_handler (Comm, ErrorCode)

This function raises the handler associated with the Communicator Comm.
If that handler returns, the return value of MPI_Raise_error_handler is
ErrorCode. (I don't see a way in the handler section of MPI-1 to change
the ErrorCode once it is imput.)

C Binding:

int MPI_Raise_error_handler (MPI_Comm Comm, int ErrorCode)

Potential usage:

if (something_bad_happened)
{
return (MPI_Raise_error_handler (Comm, MPI_My_error_code)
}

2) We need to be able to have some clean-up code attached to the finalize
call. When finalize is called, the functions on the clean-up list will
be executed before finalize does its work. These functions will not
necessarily be executed in the order they were added. (We may want to
guarantee just the opposite, but I cannot think of a reason why.)

MPI_Add_finalize_code (Handler, HandlerData)

C Binding:

int MPI_Add_finalize_code (void *Handler(), void *HandlerData)

/* void *Handler (void *HandlerData) */