31 #include <esio/visibility.h>
90 int esio_errno) ESIO_API;
107 const char *reason) ESIO_API;
149 const char * reason);
202 #define ESIO_ERROR(reason, esio_errno) \
204 esio_error (reason, __FILE__, __LINE__, esio_errno) ; \
205 return esio_errno ; \
216 #define ESIO_ERROR_VAL(reason, esio_errno, value) \
218 esio_error (reason, __FILE__, __LINE__, esio_errno) ; \
229 #define ESIO_ERROR_VOID(reason, esio_errno) \
231 esio_error (reason, __FILE__, __LINE__, esio_errno) ; \
243 #define ESIO_ERROR_NULL(reason, esio_errno) \
244 ESIO_ERROR_VAL(reason, esio_errno, 0)
254 #define ESIO_ERROR_REPORT(reason, esio_errno) \
256 esio_error (reason, __FILE__, __LINE__, esio_errno) ; \
261 #define ESIO_MPICHKx_TEMPLATE(esio_error_macro,stmt) \
263 const int _chk_stat = (stmt); \
264 if (_chk_stat != MPI_SUCCESS) { \
265 char _chk_reason[384]; \
266 char _chk_mpistring[MPI_MAX_ERROR_STRING]; \
268 const int _chk_string_stat \
269 = MPI_Error_string(_chk_stat,_chk_mpistring,&_chk_len); \
270 snprintf(_chk_reason, sizeof(_chk_reason)/sizeof(_chk_reason[0]), \
271 "Encountered MPI error code %d: %s", _chk_stat, \
272 (_chk_string_stat == MPI_SUCCESS) \
273 ? _chk_mpistring : "UNKNOWN"); \
274 esio_error_macro(_chk_reason, ESIO_EFAILED); \
292 #define ESIO_MPICHKQ(stmt) \
293 ESIO_MPICHKx_TEMPLATE(ESIO_ERROR,stmt)
307 #define ESIO_MPICHKN(stmt) \
308 ESIO_MPICHKx_TEMPLATE(ESIO_ERROR_NULL,stmt)
322 #define ESIO_MPICHKV(stmt) \
323 ESIO_MPICHKx_TEMPLATE(ESIO_ERROR_VOID,stmt)
337 #define ESIO_MPICHKR(stmt) \
338 ESIO_MPICHKx_TEMPLATE(ESIO_ERROR_REPORT,stmt)