diff --git a/ompi/mpi/fortran/mpif-h/win_attach_f.c b/ompi/mpi/fortran/mpif-h/win_attach_f.c new file mode 100644 index 0000000000..2bd14f0452 --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/win_attach_f.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" + +#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER +#pragma weak PMPI_WIN_ATTACH = ompi_win_attach_f +#pragma weak pmpi_win_attach = ompi_win_attach_f +#pragma weak pmpi_win_attach_ = ompi_win_attach_f +#pragma weak pmpi_win_attach__ = ompi_win_attach_f + +#pragma weak PMPI_Win_create_f = ompi_win_attach_f +#pragma weak PMPI_Win_create_f08 = ompi_win_attach_f +#elif OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ATTACH, + pmpi_win_attach, + pmpi_win_attach_, + pmpi_win_attach__, + pompi_win_attach_f, + (MPI_Fint *win, char *base, MPI_Aint *size, MPI_Fint *ierr), + (win, base, size, ierr) ) +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_WIN_ATTACH = ompi_win_attach_f +#pragma weak mpi_win_attach = ompi_win_attach_f +#pragma weak mpi_win_attach_ = ompi_win_attach_f +#pragma weak mpi_win_attach__ = ompi_win_attach_f + +#pragma weak MPI_Win_create_f = ompi_win_attach_f +#pragma weak MPI_Win_create_f08 = ompi_win_attach_f +#endif + +#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (MPI_WIN_ATTACH, + mpi_win_attach, + mpi_win_attach_, + mpi_win_attach__, + ompi_win_attach_f, + (MPI_Fint *win, char *base, MPI_Aint *size, MPI_Fint *ierr), + (win, base, size, ierr) ) +#endif + + +#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS +#include "ompi/mpi/fortran/mpif-h/profile/defines.h" +#endif + +void ompi_win_attach_f(MPI_Fint *win, char *base, MPI_Aint *size, + MPI_Fint *ierr) +{ + int c_ierr; + MPI_Win c_win; + + c_win = MPI_Win_f2c(*win); + c_ierr = MPI_Win_attach(c_win, base, *size); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/mpif-h/win_detach_f.c b/ompi/mpi/fortran/mpif-h/win_detach_f.c new file mode 100644 index 0000000000..9ada7b4dff --- /dev/null +++ b/ompi/mpi/fortran/mpif-h/win_detach_f.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2015 Research Organization for Information Science + * and Technology (RIST). All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow + * + * $HEADER$ + */ + +#include "ompi_config.h" + +#include "ompi/mpi/fortran/mpif-h/bindings.h" + +#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER +#pragma weak PMPI_WIN_DETACH = ompi_win_detach_f +#pragma weak pmpi_win_detach = ompi_win_detach_f +#pragma weak pmpi_win_detach_ = ompi_win_detach_f +#pragma weak pmpi_win_detach__ = ompi_win_detach_f + +#pragma weak PMPI_Win_create_f = ompi_win_detach_f +#pragma weak PMPI_Win_create_f08 = ompi_win_detach_f +#elif OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_DETACH, + pmpi_win_detach, + pmpi_win_detach_, + pmpi_win_detach__, + pompi_win_detach_f, + (MPI_Fint *win, char *base, MPI_Fint *ierr), + (win, base, ierr) ) +#endif + +#if OPAL_HAVE_WEAK_SYMBOLS +#pragma weak MPI_WIN_DETACH = ompi_win_detach_f +#pragma weak mpi_win_detach = ompi_win_detach_f +#pragma weak mpi_win_detach_ = ompi_win_detach_f +#pragma weak mpi_win_detach__ = ompi_win_detach_f + +#pragma weak MPI_Win_create_f = ompi_win_detach_f +#pragma weak MPI_Win_create_f08 = ompi_win_detach_f +#endif + +#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER +OMPI_GENERATE_F77_BINDINGS (MPI_WIN_DETACH, + mpi_win_detach, + mpi_win_detach_, + mpi_win_detach__, + ompi_win_detach_f, + (MPI_Fint *win, char *base, MPI_Fint *ierr), + (win, base, ierr) ) +#endif + + +#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS +#include "ompi/mpi/fortran/mpif-h/profile/defines.h" +#endif + +void ompi_win_detach_f(MPI_Fint *win, char *base, + MPI_Fint *ierr) +{ + int c_ierr; + MPI_Win c_win; + + c_win = MPI_Win_f2c(*win); + c_ierr = MPI_Win_detach(c_win, base); + if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr); +} diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pwin_attach_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_attach_f08.F90 new file mode 100644 index 0000000000..f7115856a9 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_attach_f08.F90 @@ -0,0 +1,22 @@ +! -*- f90 -*- +! +! Copyright (c) 2015 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine PMPI_Win_attach_f08(win,base,size,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + use :: mpi_f08, only : ompi_win_attach_f + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base + INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_attach_f(win%MPI_VAL,base,size,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_Win_attach_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/profile/pwin_detach_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_detach_f08.F90 new file mode 100644 index 0000000000..426d69890e --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/profile/pwin_detach_f08.F90 @@ -0,0 +1,21 @@ +! -*- f90 -*- +! +! Copyright (c) 2015 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine PMPI_Win_detach_f08(win,base,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + use :: mpi_f08, only : ompi_win_detach_f + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_detach_f(win%MPI_VAL,base,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine PMPI_Win_detach_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/win_attach_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/win_attach_f08.F90 new file mode 100644 index 0000000000..83c7088159 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/win_attach_f08.F90 @@ -0,0 +1,22 @@ +! -*- f90 -*- +! +! Copyright (c) 2015 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine MPI_Win_attach_f08(win,base,size,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + use :: mpi_f08, only : ompi_win_attach_f + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base + INTEGER(MPI_ADDRESS_KIND), INTENT(IN) :: size + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_attach_f(win%MPI_VAL,base,size,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine MPI_Win_attach_f08 diff --git a/ompi/mpi/fortran/use-mpi-f08/win_detach_f08.F90 b/ompi/mpi/fortran/use-mpi-f08/win_detach_f08.F90 new file mode 100644 index 0000000000..cd7aab7169 --- /dev/null +++ b/ompi/mpi/fortran/use-mpi-f08/win_detach_f08.F90 @@ -0,0 +1,21 @@ +! -*- f90 -*- +! +! Copyright (c) 2015 Research Organization for Information Science +! and Technology (RIST). All rights reserved. +! $COPYRIGHT$ + +#include "ompi/mpi/fortran/configure-fortran-output.h" + +subroutine MPI_Win_detach_f08(win,base,ierror) + use :: mpi_f08_types, only : MPI_Win, MPI_ADDRESS_KIND + use :: mpi_f08, only : ompi_win_detach_f + implicit none + OMPI_FORTRAN_IGNORE_TKR_TYPE, INTENT(IN) :: base + TYPE(MPI_Win), INTENT(OUT) :: win + INTEGER, OPTIONAL, INTENT(OUT) :: ierror + integer :: c_ierror + + call ompi_win_detach_f(win%MPI_VAL,base,c_ierror) + if (present(ierror)) ierror = c_ierror + +end subroutine MPI_Win_detach_f08