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};
121 if (fenix::initialized()) mlog::activate(old_mlog);
124 const bool old_inline_recovery =
125 old_mlog != FENIX_MLOG_NONE && get_option(MLOG_RECOVERY_MODE) != MANUAL &&
126 get_option(RECOVERY_MODE) != IGNORE;
132#define RUNTIME_EXCEPTION_HANDLER \
133 } catch (const fenix::RuntimeException& e) { \
134 debug_print("%s\n", e.what()); \
137#define COMM_EXCEPTION_HANDLER \
138 } catch (const fenix::CommException& e) { \
139 return fenix::util::resume_application(); \
142#define FENIX_CPP_API_BEGIN \
144 fenix::util::ScopedDefaultRuntimeOptions _scoped_dro; \
145 if (!fenix::initialized()) FENIX_THROW(FENIX_ERROR_UNINITIALIZED);
149#define FENIX_C_API_BEGIN FENIX_CPP_API_BEGIN
151#ifdef FENIX_C_CATCH_RUNTIME_EXCEPTIONS
152#define FENIX_C_API_END RUNTIME_EXCEPTION_HANDLER COMM_EXCEPTION_HANDLER
154#define FENIX_C_API_END COMM_EXCEPTION_HANDLER
157#ifdef FENIX_CPP_CATCH_RUNTIME_EXCEPTIONS
158#define FENIX_CPP_API_END RUNTIME_EXCEPTION_HANDLER COMM_EXCEPTION_HANDLER
160#define FENIX_CPP_API_END COMM_EXCEPTION_HANDLER
164#define FENIX_LOCAL_CPP_API_BEGIN try {
165#define FENIX_LOCAL_CPP_API_END FENIX_CPP_API_END
167#define FENIX_LOCAL_C_API_BEGIN FENIX_LOCAL_CPP_API_BEGIN
168#define FENIX_LOCAL_C_API_END FENIX_C_API_END
Fenix_Setting_name
Global Fenix settings.
Definition fenix.h:172
Definition fenix_util.hpp:116
Definition fenix_util.hpp:107
Definition fenix_util.hpp:112
Definition fenix_util.hpp:90