|
Packit |
0848f5 |
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
|
|
Packit |
0848f5 |
/*
|
|
Packit |
0848f5 |
* (C) 2001 by Argonne National Laboratory.
|
|
Packit |
0848f5 |
* See COPYRIGHT in top-level directory.
|
|
Packit |
0848f5 |
*/
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
#include "mpidimpl.h"
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
#undef FUNCNAME
|
|
Packit |
0848f5 |
#define FUNCNAME MPIDI_CH3_PktHandler_Revoke
|
|
Packit |
0848f5 |
#undef FCNAME
|
|
Packit |
0848f5 |
#define FCNAME MPL_QUOTE(FUNCNAME)
|
|
Packit |
0848f5 |
int MPIDI_CH3_PktHandler_Revoke(MPIDI_VC_t *vc, MPIDI_CH3_Pkt_t *pkt,
|
|
Packit |
0848f5 |
void *data ATTRIBUTE((unused)),
|
|
Packit |
0848f5 |
MPIDI_msg_sz_t *buflen, MPID_Request **rreqp)
|
|
Packit |
0848f5 |
{
|
|
Packit |
0848f5 |
MPIDI_CH3_Pkt_revoke_t *revoke_pkt = &pkt->revoke;
|
|
Packit |
0848f5 |
int mpi_errno = MPI_SUCCESS;
|
|
Packit |
0848f5 |
MPID_Comm *comm_ptr = NULL;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
MPIU_DBG_MSG_D(CH3_OTHER, VERBOSE, "Received revoke pkt from %d", vc->pg_rank);
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
/* Search through all of the communicators to find the right context_id */
|
|
Packit |
0848f5 |
MPIDI_CH3I_Comm_find(revoke_pkt->revoked_comm, &comm_ptr);
|
|
Packit |
0848f5 |
if (comm_ptr == NULL)
|
|
Packit |
0848f5 |
MPIR_ERR_SETANDJUMP1(mpi_errno, MPI_ERR_OTHER, "**ch3|postrecv",
|
|
Packit |
0848f5 |
"**ch3|postrecv %s", "MPIDI_CH3_PKT_REVOKE");
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
mpi_errno = MPID_Comm_revoke(comm_ptr, 1);
|
|
Packit |
0848f5 |
if (mpi_errno != MPI_SUCCESS)
|
|
Packit |
0848f5 |
MPIR_ERR_SETANDJUMP1(mpi_errno, MPI_ERR_OTHER, "**ch3|postrecv",
|
|
Packit |
0848f5 |
"**ch3|postrecv %s", "MPIDI_CH3_PKT_REVOKE");
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
/* There is no request associated with a revoke packet */
|
|
Packit |
0848f5 |
*rreqp = NULL;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
fn_fail:
|
|
Packit |
0848f5 |
return mpi_errno;
|
|
Packit |
0848f5 |
}
|