Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
"Implement" MPI_File_set_view, MPI_File_get_view.
[simgrid.git] / src / smpi / bindings / smpi_pmpi_file.cpp
index 7d3bfdb..0618f8a 100644 (file)
@@ -29,7 +29,6 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi);
   CHECK_BUFFER(2, buf, count)                                                                                          \
   CHECK_COUNT(3, count)                                                                                                \
   CHECK_TYPE(4, datatype)                                                                                              \
-  CHECK_NULL(5, MPI_ERR_ARG, status)
 
 #define CHECK_FILE_INPUT_OFFSET                                                                                        \
   CHECK_FILE(1, fh)                                                                                                    \
@@ -37,7 +36,6 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi);
   CHECK_OFFSET(3, offset)                                                                                                 \
   CHECK_COUNT(4, count)                                                                                                \
   CHECK_TYPE(5, datatype)                                                                                              \
-  CHECK_NULL(6, MPI_ERR_ARG, status)
 
 extern MPI_Errhandler SMPI_default_File_Errhandler;
 
@@ -289,6 +287,29 @@ int PMPI_File_delete(const char *filename, MPI_Info info){
   return ret;
 }
 
+int PMPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, const char *datarep, MPI_Info info){
+  CHECK_FILE(1, fh)
+  if(not ((fh->flags() & MPI_MODE_SEQUENTIAL) && (disp == MPI_DISPLACEMENT_CURRENT)))
+    CHECK_OFFSET(2, disp)
+  CHECK_TYPE(3, etype)
+  CHECK_TYPE(4, filetype)
+  smpi_bench_end();
+  int ret = fh->set_view(disp, etype, filetype, datarep, info);
+  smpi_bench_begin();
+  return ret;
+}
+
+int PMPI_File_get_view(MPI_File fh, MPI_Offset *disp, MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep){
+  CHECK_FILE(1, fh)
+  CHECK_NULL(2, MPI_ERR_ARG, disp)
+  CHECK_NULL(3, MPI_ERR_ARG, etype)
+  CHECK_NULL(4, MPI_ERR_ARG, filetype)
+  smpi_bench_end();
+  int ret = fh->get_view(disp, etype, filetype, datarep);
+  smpi_bench_begin();
+  return ret;
+}
+
 int PMPI_File_get_info(MPI_File  fh, MPI_Info* info)
 {
   CHECK_FILE(1, fh)