62#include "fenix_opt.hpp"
66void __fenix_ranks_agree(
int*,
int*,
int*, MPI_Datatype*);
68int __fenix_binary_search(
int*,
int,
int);
70int __fenix_comparator(
const void*,
const void*);
72int __fenix_get_size(MPI_Datatype);
74int __fenix_get_current_rank(MPI_Comm);
76int __fenix_get_world_size(MPI_Comm);
78void* s_calloc(
int count,
size_t size);
80void* s_malloc(
size_t size);
82void* s_realloc(
void* mem,
size_t size);
84namespace fenix::util {
86int resume_application(
bool new_exception =
false);
92 set_option(setting, new_option);
95 if (fenix::initialized()) set_option(setting, old);
103 const int old = get_option(setting);
108 ScopedOption resume{RESUME_MODE, THROW}, unhandled{UNHANDLED_MODE, ABORT};
113 ScopedOption recovery{RECOVERY_MODE, IGNORE}, resume{RESUME_MODE, RETURN};
119 if (fenix::initialized()) mlog::activate(old_mlog);
122 const bool old_inline_recovery = old_mlog != FENIX_MLOG_NONE &&
123 get_option(MLOG_RECOVERY_MODE) != MANUAL &&
124 get_option(RECOVERY_MODE) != IGNORE;
130#define RUNTIME_EXCEPTION_HANDLER \
131 } catch (const fenix::RuntimeException& e) { \
132 debug_print("%s\n", e.what()); \
135#define COMM_EXCEPTION_HANDLER \
136 } catch (const fenix::CommException& e) { \
137 return fenix::util::resume_application(); \
140#define FENIX_CPP_API_BEGIN \
142 fenix::util::ScopedDefaultRuntimeOptions _scoped_dro; \
143 if (!fenix::initialized()) FENIX_THROW(FENIX_ERROR_UNINITIALIZED);
147#define FENIX_C_API_BEGIN FENIX_CPP_API_BEGIN
149#ifdef FENIX_C_CATCH_RUNTIME_EXCEPTIONS
150#define FENIX_C_API_END RUNTIME_EXCEPTION_HANDLER COMM_EXCEPTION_HANDLER
152#define FENIX_C_API_END COMM_EXCEPTION_HANDLER
155#ifdef FENIX_CPP_CATCH_RUNTIME_EXCEPTIONS
156#define FENIX_CPP_API_END RUNTIME_EXCEPTION_HANDLER COMM_EXCEPTION_HANDLER
158#define FENIX_CPP_API_END COMM_EXCEPTION_HANDLER
162#define FENIX_LOCAL_CPP_API_BEGIN try {
163#define FENIX_LOCAL_CPP_API_END FENIX_CPP_API_END
165#define FENIX_LOCAL_C_API_BEGIN FENIX_LOCAL_CPP_API_BEGIN
166#define FENIX_LOCAL_C_API_END FENIX_C_API_END
Fenix_Setting_name
Global Fenix settings.
Definition fenix.h:182
Definition fenix_util.hpp:116
Definition fenix_util.hpp:107
Definition fenix_util.hpp:112
Definition fenix_util.hpp:90