#include "xbt/setset.h"
#include "xbt/config.h"
#include "xbt/function_types.h"
-#include "mmalloc.h"
+#include "xbt/mmalloc.h"
#include "../simix/private.h"
/****************************** Snapshots ***********************************/
typedef struct s_mc_transition{
XBT_SETSET_HEADERS;
char* name;
- unsigned int refcount;
mc_trans_type_t type;
smx_process_t process;
smx_rdv_t rdv;
smx_comm_t comm; /* reference to the simix network communication */
+
+ /* Used only for random transitions */
+ int min; /* min random value */
+ int max; /* max random value */
+ int current_value; /* current value */
} s_mc_transition_t;
+void MC_random_create(int,int);
void MC_transition_delete(mc_transition_t);
int MC_transition_depend(mc_transition_t, mc_transition_t);
/******************************** States **************************************/
typedef struct mc_state{
- xbt_setset_set_t transitions;
- xbt_setset_set_t enabled_transitions;
- xbt_setset_set_t interleave;
- xbt_setset_set_t done;
- mc_transition_t executed_transition;
+ xbt_setset_set_t created_transitions; /* created in this state */
+ xbt_setset_set_t transitions; /* created in this state + inherited */
+ xbt_setset_set_t enabled_transitions; /* they can be executed by the mc */
+ xbt_setset_set_t interleave; /* the ones to be executed by the mc */
+ xbt_setset_set_t done; /* already executed transitions */
+ mc_transition_t executed_transition; /* last executed transition */
} s_mc_state_t, *mc_state_t;
extern xbt_fifo_t mc_stack;
extern xbt_setset_t mc_setset;
+extern mc_state_t mc_current_state;
mc_state_t MC_state_new(void);
void MC_state_delete(mc_state_t);
/* Normally the system should operate in std, for switching to raw mode */
/* you must wrap the code between MC_SET_RAW_MODE and MC_UNSET_RAW_MODE */
-extern void *actual_heap;
extern void *std_heap;
extern void *raw_heap;
extern void *libsimgrid_data_addr_start;
extern size_t libsimgrid_data_size;
-#define MC_SET_RAW_MEM actual_heap = raw_heap
-#define MC_UNSET_RAW_MEM actual_heap = std_heap
+#define MC_SET_RAW_MEM mmalloc_set_current_heap(raw_heap)
+#define MC_UNSET_RAW_MEM mmalloc_set_current_heap(std_heap)
/******************************* MEMORY MAPPINGS ***************************/
/* These functions and data structures implements a binary interface for */