+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi);
+#define CHECK_FLAGS(fh) \
+ if ((fh)->flags() & MPI_MODE_SEQUENTIAL) \
+ return MPI_ERR_AMODE;
+#define CHECK_RDONLY(fh) \
+ if ((fh)->flags() & MPI_MODE_RDONLY) \
+ return MPI_ERR_AMODE;
+#define PASS_ZEROCOUNT(count) \
+ if ((count) == 0) { \
+ status->count = 0; \
+ return MPI_SUCCESS; \
+ }
+
+#define CHECK_FILE_INPUTS \
+ CHECK_FILE(1, fh) \
+ 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) \
+ CHECK_BUFFER(2, buf, count) \
+ CHECK_OFFSET(3, offset) \
+ CHECK_COUNT(4, count) \
+ CHECK_TYPE(5, datatype) \
+ CHECK_NULL(6, MPI_ERR_ARG, status)
+