1 /*
2 * Copyright (C) by Argonne National Laboratory
3 * See COPYRIGHT in top-level directory
4 */
5
6 /*
7 * The POSIX shared memory module uses the CH4-fallback active message implementation for tracking
8 * requests and performing message matching. This is because these functions are always implemented
9 * in software, therefore duplicating the code to perform the matching is a bad idea. In all of
10 * these functions, we call back up to the fallback code to start the process of sending the
11 * message.
12 */
13
14 #ifndef POSIX_SEND_H_INCLUDED
15 #define POSIX_SEND_H_INCLUDED
16
17 #include "posix_impl.h"
18
MPIDI_POSIX_mpi_send(const void * buf,MPI_Aint count,MPI_Datatype datatype,int rank,int tag,MPIR_Comm * comm,int context_offset,MPIDI_av_entry_t * addr,MPIR_Request ** request)19 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_send(const void *buf, MPI_Aint count,
20 MPI_Datatype datatype, int rank, int tag,
21 MPIR_Comm * comm, int context_offset,
22 MPIDI_av_entry_t * addr, MPIR_Request ** request)
23 {
24 return MPIDIG_mpi_send(buf, count, datatype, rank, tag, comm, context_offset, addr, request);
25 }
26
MPIDI_POSIX_send_coll(const void * buf,MPI_Aint count,MPI_Datatype datatype,int rank,int tag,MPIR_Comm * comm,int context_offset,MPIDI_av_entry_t * addr,MPIR_Request ** request,MPIR_Errflag_t * errflag)27 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_send_coll(const void *buf, MPI_Aint count,
28 MPI_Datatype datatype, int rank, int tag,
29 MPIR_Comm * comm, int context_offset,
30 MPIDI_av_entry_t * addr,
31 MPIR_Request ** request,
32 MPIR_Errflag_t * errflag)
33 {
34 return MPIDIG_send_coll(buf, count, datatype, rank, tag, comm, context_offset, addr, request,
35 errflag);
36 }
37
MPIDI_POSIX_mpi_ssend(const void * buf,MPI_Aint count,MPI_Datatype datatype,int rank,int tag,MPIR_Comm * comm,int context_offset,MPIDI_av_entry_t * addr,MPIR_Request ** request)38 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_ssend(const void *buf, MPI_Aint count,
39 MPI_Datatype datatype, int rank, int tag,
40 MPIR_Comm * comm, int context_offset,
41 MPIDI_av_entry_t * addr, MPIR_Request ** request)
42 {
43 return MPIDIG_mpi_ssend(buf, count, datatype, rank, tag, comm, context_offset, addr, request);
44 }
45
MPIDI_POSIX_mpi_isend(const void * buf,MPI_Aint count,MPI_Datatype datatype,int rank,int tag,MPIR_Comm * comm,int context_offset,MPIDI_av_entry_t * addr,MPIR_Request ** request)46 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_isend(const void *buf, MPI_Aint count,
47 MPI_Datatype datatype, int rank, int tag,
48 MPIR_Comm * comm, int context_offset,
49 MPIDI_av_entry_t * addr, MPIR_Request ** request)
50 {
51 return MPIDIG_mpi_isend(buf, count, datatype, rank, tag, comm, context_offset, addr, request);
52 }
53
MPIDI_POSIX_isend_coll(const void * buf,MPI_Aint count,MPI_Datatype datatype,int rank,int tag,MPIR_Comm * comm,int context_offset,MPIDI_av_entry_t * addr,MPIR_Request ** request,MPIR_Errflag_t * errflag)54 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_isend_coll(const void *buf, MPI_Aint count,
55 MPI_Datatype datatype, int rank, int tag,
56 MPIR_Comm * comm, int context_offset,
57 MPIDI_av_entry_t * addr,
58 MPIR_Request ** request,
59 MPIR_Errflag_t * errflag)
60 {
61 return MPIDIG_isend_coll(buf, count, datatype, rank, tag, comm, context_offset, addr, request,
62 errflag);
63 }
64
MPIDI_POSIX_mpi_issend(const void * buf,MPI_Aint count,MPI_Datatype datatype,int rank,int tag,MPIR_Comm * comm,int context_offset,MPIDI_av_entry_t * addr,MPIR_Request ** request)65 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_issend(const void *buf, MPI_Aint count,
66 MPI_Datatype datatype, int rank, int tag,
67 MPIR_Comm * comm, int context_offset,
68 MPIDI_av_entry_t * addr,
69 MPIR_Request ** request)
70 {
71 return MPIDIG_mpi_issend(buf, count, datatype, rank, tag, comm, context_offset, addr, request);
72 }
73
MPIDI_POSIX_mpi_cancel_send(MPIR_Request * sreq)74 MPL_STATIC_INLINE_PREFIX int MPIDI_POSIX_mpi_cancel_send(MPIR_Request * sreq)
75 {
76 return MPIDIG_mpi_cancel_send(sreq);
77 }
78
79 #endif /* POSIX_SEND_H_INCLUDED */
80