Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
CpuTi in c++
[simgrid.git] / src / simix / smx_private.h
index 59f4342..f15d3c1 100644 (file)
@@ -8,6 +8,7 @@
 #define _SIMIX_PRIVATE_H
 
 #include "simgrid/simix.h"
+#include "surf/solver.h"
 #include "surf/surf.h"
 #include "xbt/fifo.h"
 #include "xbt/swag.h"
@@ -75,10 +76,6 @@ typedef struct s_smx_file {
   surf_file_t surf_file;
 } s_smx_file_t;
 
-typedef struct s_smx_stat {
-  s_file_stat_t surf_stat;
-} s_smx_stat_t;
-
 /*********************************** Time ************************************/
 
 /** @brief Timer datatype */
@@ -136,6 +133,12 @@ typedef struct s_smx_action {
     struct {
       e_smx_comm_type_t type;         /* Type of the communication (SIMIX_COMM_SEND or SIMIX_COMM_RECEIVE) */
       smx_rdv_t rdv;                  /* Rendez-vous where the comm is queued */
+
+#ifdef HAVE_MC
+      smx_rdv_t rdv_cpy;              /* Copy of the rendez-vous where the comm is queued, MC needs it for DPOR 
+                                         (comm.rdv set to NULL when the communication is removed from the mailbox 
+                                         (used as garbage collector)) */
+#endif
       int refcount;                   /* Number of processes involved in the cond */
       int detached;                   /* If detached or not */
 
@@ -258,7 +261,8 @@ static XBT_INLINE smx_context_t SIMIX_context_new(xbt_main_func_t code,
                                                   void_pfn_smxprocess_t cleanup_func,
                                                   smx_process_t simix_process)
 {
-
+  if (!simix_global)
+    xbt_die("simix is not initialized, please call MSG_init first");
   return simix_global->context_factory->create_context(code,
                                                        argc, argv,
                                                        cleanup_func,
@@ -312,7 +316,6 @@ static XBT_INLINE smx_context_t SIMIX_context_self(void)
   if (simix_global && simix_global->context_factory) {
     return simix_global->context_factory->self();
   }
-
   return NULL;
 }