/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */ /* * (C) 2001 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. * */ #ifndef MPIR_MISC_POST_H_INCLUDED #define MPIR_MISC_POST_H_INCLUDED /* Pull the error status out of the tag space and put it into an errflag. */ #undef FUNCNAME #define FUNCNAME MPIR_process_status #undef FCNAME #define FCNAME MPL_QUOTE(FUNCNAME) static inline void MPIR_Process_status(MPI_Status * status, MPIR_Errflag_t * errflag) { if (MPI_PROC_NULL != status->MPI_SOURCE && (MPIX_ERR_REVOKED == MPIR_ERR_GET_CLASS(status->MPI_ERROR) || MPIX_ERR_PROC_FAILED == MPIR_ERR_GET_CLASS(status->MPI_ERROR) || MPIR_TAG_CHECK_ERROR_BIT(status->MPI_TAG)) && !*errflag) { /* If the receive was completed within the MPID_Recv, handle the * errflag here. */ if (MPIR_TAG_CHECK_PROC_FAILURE_BIT(status->MPI_TAG) || MPIX_ERR_PROC_FAILED == MPIR_ERR_GET_CLASS(status->MPI_ERROR)) { *errflag = MPIR_ERR_PROC_FAILED; MPIR_TAG_CLEAR_ERROR_BITS(status->MPI_TAG); } else { *errflag = MPIR_ERR_OTHER; MPIR_TAG_CLEAR_ERROR_BITS(status->MPI_TAG); } } } #endif /* MPIR_MISC_POST_H_INCLUDED */