X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fe304706848f0a64477d4687b3ea97d5b9a0c35c..21fe278c8460849931b37ccde22e944edec46f71:/src/smpi/bindings/smpi_pmpi_win.cpp diff --git a/src/smpi/bindings/smpi_pmpi_win.cpp b/src/smpi/bindings/smpi_pmpi_win.cpp index 6bbeef2215..32abd4ef65 100644 --- a/src/smpi/bindings/smpi_pmpi_win.cpp +++ b/src/smpi/bindings/smpi_pmpi_win.cpp @@ -839,9 +839,46 @@ int PMPI_Win_free_keyval(int* keyval) { } MPI_Win PMPI_Win_f2c(MPI_Fint win){ + if(win==-1) + return MPI_WIN_NULL; return static_cast(simgrid::smpi::Win::f2c(win)); } MPI_Fint PMPI_Win_c2f(MPI_Win win){ + if(win==MPI_WIN_NULL) + return -1; return win->c2f(); } + +int PMPI_Win_create_errhandler(MPI_Win_errhandler_function* function, MPI_Errhandler* errhandler){ + *errhandler=new simgrid::smpi::Errhandler(function); + return MPI_SUCCESS; +} + +int PMPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler* errhandler){ + if (win == nullptr) { + return MPI_ERR_WIN; + } else if (errhandler==nullptr){ + return MPI_ERR_ARG; + } + *errhandler=win->errhandler(); + return MPI_SUCCESS; +} + +int PMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler){ + if (win == nullptr) { + return MPI_ERR_WIN; + } else if (errhandler==nullptr){ + return MPI_ERR_ARG; + } + win->set_errhandler(errhandler); + return MPI_SUCCESS; +} + +int PMPI_Win_call_errhandler(MPI_Win win,int errorcode){ + if (win == nullptr) { + return MPI_ERR_WIN; + } + win->errhandler()->call(win, errorcode); + return MPI_SUCCESS; +}