1 /*
2  * Copyright (c) 2015      Research Organization for Information Science
3  *                         and Technology (RIST). All rights reserved.
4  * $COPYRIGHT$
5  *
6  * Additional copyrights may follow
7  *
8  * $HEADER$
9  */
10 
11 #include "ompi_config.h"
12 
13 #include "ompi/mpi/fortran/mpif-h/bindings.h"
14 
15 #if OMPI_BUILD_MPI_PROFILING
16 #if OPAL_HAVE_WEAK_SYMBOLS
17 #pragma weak PMPI_WIN_DETACH = ompi_win_detach_f
18 #pragma weak pmpi_win_detach = ompi_win_detach_f
19 #pragma weak pmpi_win_detach_ = ompi_win_detach_f
20 #pragma weak pmpi_win_detach__ = ompi_win_detach_f
21 
22 #pragma weak PMPI_Win_detach_f = ompi_win_detach_f
23 #pragma weak PMPI_Win_detach_f08 = ompi_win_detach_f
24 #else
25 OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_DETACH,
26                            pmpi_win_detach,
27                            pmpi_win_detach_,
28                            pmpi_win_detach__,
29                            pompi_win_detach_f,
30                            (MPI_Fint *win, char *base, MPI_Fint *ierr),
31                            (win, base, ierr) )
32 #endif
33 #endif
34 
35 #if OPAL_HAVE_WEAK_SYMBOLS
36 #pragma weak MPI_WIN_DETACH = ompi_win_detach_f
37 #pragma weak mpi_win_detach = ompi_win_detach_f
38 #pragma weak mpi_win_detach_ = ompi_win_detach_f
39 #pragma weak mpi_win_detach__ = ompi_win_detach_f
40 
41 #pragma weak MPI_Win_detach_f = ompi_win_detach_f
42 #pragma weak MPI_Win_detach_f08 = ompi_win_detach_f
43 #else
44 #if ! OMPI_BUILD_MPI_PROFILING
45 OMPI_GENERATE_F77_BINDINGS (MPI_WIN_DETACH,
46                            mpi_win_detach,
47                            mpi_win_detach_,
48                            mpi_win_detach__,
49                            ompi_win_detach_f,
50                            (MPI_Fint *win, char *base, MPI_Fint *ierr),
51                            (win, base, ierr) )
52 #else
53 #define ompi_win_detach_f pompi_win_detach_f
54 #endif
55 #endif
56 
57 
ompi_win_detach_f(MPI_Fint * win,char * base,MPI_Fint * ierr)58 void ompi_win_detach_f(MPI_Fint *win, char *base,
59 		      MPI_Fint *ierr)
60 {
61     int c_ierr;
62     MPI_Win c_win;
63 
64     c_win = PMPI_Win_f2c(*win);
65     c_ierr = PMPI_Win_detach(c_win, base);
66     if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
67 }
68