SimGrid  3.13
Versatile Simulation of Distributed Systems
ex.h File Reference
#include "xbt/sysdep.h"
#include "xbt/misc.h"
#include "xbt/virtu.h"
#include <setjmp.h>

Classes

struct  __ex_mctx_t
 
struct  xbt_ex_t
 Structure describing an exception. More...
 
struct  xbt_running_ctx_t
 

Macros

#define MAYDAY_SAVE(m)
 
#define MAYDAY_RESTORE(m)
 
#define MAYDAY_CATCH(e)
 
#define __ex_mctx_struct   jmp_buf jb;
 
#define __ex_mctx_save(mctx)   ( MAYDAY_SAVE(mctx) setjmp((mctx)->jb) == 0)
 
#define __ex_mctx_restored(mctx)   /* noop */
 
#define __ex_mctx_restore(mctx)   ( MAYDAY_RESTORE(mctx) (void)longjmp((mctx)->jb, 1))
 
#define XBT_RUNNING_CTX_INITIALIZER
 
#define XBT_RUNNING_CTX_INITIALIZE(ctx)
 
#define TRY
 Introduce a block where exception may be dealed with. More...
 
#define TRY_CLEANUP
 optional(!) block for cleanup More...
 
#define XBT_EX_T_CPLUSPLUSCAST
 
#define CATCH(e)
 the block for catching (ie, deal with) an exception More...
 
#define CATCH_ANONYMOUS
 like CATCH(e) but without argument More...
 
#define DO_CATCH(_xbt_do_catch_set_e)
 
#define DO_THROW(running_ctx)
 
#define THROW_PREPARE(_throw_ctx, c, v, m)
 Helper macro for THROW and THROWF. More...
 
#define _XBT_THROW(c, v, m)
 
#define THROW(c, v)
 Builds and throws an exception. More...
 
#define THROWF(c, v, ...)
 Builds and throws an exception with a printf-like formatted message. More...
 
#define THROW_IMPOSSIBLE   THROWF(unknown_error, 0, "The Impossible Did Happen (yet again)")
 
#define THROW_UNIMPLEMENTED   THROWF(unknown_error, 0, "Function %s unimplemented",__func__)
 
#define THROW_DEADCODE   THROWF(unknown_error, 0, "Function %s was supposed to be DEADCODE, but it's not",__func__)
 
#define DIE_IMPOSSIBLE   xbt_die("The Impossible Did Happen (yet again)")
 
#define RETHROW
 re-throwing of an already caught exception (ie, pass it to the upper catch block) More...
 
#define RETHROWF(...)
 like THROWF, but adding some details to the message of an existing exception More...
 

Typedefs

typedef struct xbt_running_ctx_t xbt_running_ctx_t
 
typedef xbt_running_ctx_t *(* xbt_running_ctx_fetcher_t) (void)
 
typedef void(* ex_term_cb_t) (xbt_ex_t *)
 

Enumerations

enum  xbt_errcat_t {
  unknown_error = 0, arg_error, bound_error, mismatch_error,
  not_found_error, system_error, network_error, timeout_error,
  cancel_error, thread_error, host_error, tracing_error,
  io_error, vm_error
}
 different kind of errors More...
 

Functions

const char * xbt_ex_catname (xbt_errcat_t cat)
 returns a short name for the given exception category More...
 
xbt_running_ctx_t__xbt_ex_ctx_default (void)
 
void __xbt_ex_terminate_default (xbt_ex_t *e)
 
void xbt_ex_free (xbt_ex_t e)
 Exception destructor. More...
 
void xbt_ex_display (xbt_ex_t *e)
 The display made by an exception that is not catched. More...
 
void xbt_backtrace_display_current (void)
 Shows a backtrace of the current location. More...
 
int xbt_backtrace_no_malloc (void **bt, int size)
 reimplementation of glibc backtrace based directly on gcc library, without implicit malloc More...
 
void xbt_backtrace_current (xbt_ex_t *e)
 Captures a backtrace for further use. More...
 
void xbt_backtrace_display (xbt_ex_t *e)
 Display a previously captured backtrace. More...
 
int xbt_libunwind_backtrace (void *bt[XBT_BACKTRACE_SIZE], int size)
 Get current backtrace with libunwind. More...
 

Variables

const xbt_running_ctx_t __xbt_ex_ctx_initializer
 
xbt_running_ctx_fetcher_t __xbt_running_ctx_fetch
 
ex_term_cb_t __xbt_ex_terminate
 

Macro Definition Documentation

#define MAYDAY_SAVE (   m)
#define MAYDAY_RESTORE (   m)
#define MAYDAY_CATCH (   e)
#define __ex_mctx_struct   jmp_buf jb;
#define __ex_mctx_save (   mctx)    ( MAYDAY_SAVE(mctx) setjmp((mctx)->jb) == 0)
#define __ex_mctx_restored (   mctx)    /* noop */
#define __ex_mctx_restore (   mctx)    ( MAYDAY_RESTORE(mctx) (void)longjmp((mctx)->jb, 1))