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