Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Move methods in Process class
[simgrid.git] / src / mc / mc_checkpoint.cpp
index 48f67d67286bdadfe9a8b56229a99c37a5d3fb55..e05a59eba861207ce76b87187ca368d12a98bb62 100644 (file)
@@ -35,6 +35,8 @@
 #include "mc_protocol.h"
 #include "mc_smx.h"
 
+using simgrid::mc::remote;
+
 extern "C" {
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc,
@@ -113,7 +115,7 @@ static mc_mem_region_t mc_region_new_dense(
   region->size = size;
   region->flat.data = xbt_malloc(size);
   mc_model_checker->process().read_bytes(region->flat.data, size,
-    (std::uint64_t)permanent_addr,
+    remote(permanent_addr),
     simgrid::mc::ProcessIndexDisabled);
   XBT_DEBUG("New region : type : %d, data : %p (real addr %p), size : %zu",
             region_type, region->flat.data, permanent_addr, size);
@@ -150,8 +152,8 @@ static void MC_region_restore(mc_mem_region_t region)
     break;
 
   case MC_REGION_STORAGE_TYPE_FLAT:
-    MC_process_write(&mc_model_checker->process(), region->flat.data,
-      region->permanent_addr, region->size);
+    mc_model_checker->process().write_bytes(region->flat.data, region->size,
+      remote(region->permanent_addr));
     break;
 
   case MC_REGION_STORAGE_TYPE_CHUNKED:
@@ -185,13 +187,13 @@ static mc_mem_region_t MC_region_new_privatized(
 
   // Read smpi_privatisation_regions from MCed:
   smpi_privatisation_region_t remote_smpi_privatisation_regions;
-  MC_process_read_variable(&mc_model_checker->process(),
+  mc_model_checker->process().read_variable(
     "smpi_privatisation_regions",
     &remote_smpi_privatisation_regions, sizeof(remote_smpi_privatisation_regions));
   s_smpi_privatisation_region_t privatisation_regions[process_count];
   mc_model_checker->process().read_bytes(
     &privatisation_regions, sizeof(privatisation_regions),
-    (std::uint64_t)remote_smpi_privatisation_regions);
+    remote(remote_smpi_privatisation_regions));
 
   for (size_t i = 0; i < process_count; i++) {
     region->privatized.regions[i] =
@@ -236,7 +238,7 @@ static void MC_get_memory_regions(mc_process_t process, mc_snapshot_t snapshot)
       object_info->end_rw - object_info->start_rw);
   }
 
-  xbt_mheap_t heap = MC_process_get_heap(process);
+  xbt_mheap_t heap = process->get_heap();
   void *start_heap = heap->base;
   void *end_heap = heap->breakval;
 
@@ -245,12 +247,12 @@ static void MC_get_memory_regions(mc_process_t process, mc_snapshot_t snapshot)
                         (char *) end_heap - (char *) start_heap);
   snapshot->heap_bytes_used = mmalloc_get_bytes_used_remote(
     heap->heaplimit,
-    MC_process_get_malloc_info(process));
+    process->get_malloc_info());
 
 #ifdef HAVE_SMPI
   if (smpi_privatize_global_variables && MC_smpi_process_count()) {
     // snapshot->privatization_index = smpi_loaded_page
-    MC_process_read_variable(&mc_model_checker->process(),
+    mc_model_checker->process().read_variable(
       "smpi_loaded_page", &snapshot->privatization_index,
       sizeof(snapshot->privatization_index));
   } else
@@ -460,7 +462,7 @@ static xbt_dynar_t MC_unwind_stack_frames(mc_unw_context_t stack_context)
 
       // TODO, use real addresses in frame_t instead of fixing it here
 
-      dw_frame_t frame = MC_process_find_function(process, (void *) ip);
+      dw_frame_t frame = process->find_function(remote(ip));
       stack_frame->frame = frame;
 
       if (frame) {
@@ -510,7 +512,7 @@ static xbt_dynar_t MC_take_snapshot_stacks(mc_snapshot_t * snapshot)
     // Read the context from remote process:
     unw_context_t context;
     mc_model_checker->process().read_bytes(
-      &context, sizeof(context), (std::uint64_t) current_stack->context);
+      &context, sizeof(context), remote(current_stack->context));
 
     st->context = xbt_new0(s_mc_unw_context_t, 1);
     if (mc_unw_init_context(st->context, &mc_model_checker->process(),
@@ -582,14 +584,14 @@ static void MC_snapshot_handle_ignore(mc_snapshot_t snapshot)
     ignored_data.data = malloc(region->size);
     // TODO, we should do this once per privatization segment:
     snapshot->process->read_bytes(
-      ignored_data.data, region->size, (std::uint64_t) region->addr,
+      ignored_data.data, region->size, remote(region->addr),
       simgrid::mc::ProcessIndexDisabled);
     xbt_dynar_push(snapshot->ignored_data, &ignored_data);
   }
 
   // Zero the memory:
   xbt_dynar_foreach (mc_model_checker->process().checkpoint_ignore, cursor, region) {
-    MC_process_clear_memory(snapshot->process, region->addr, region->size);
+    snapshot->process->clear_bytes(remote(region->addr), region->size);
   }
 
 }
@@ -599,8 +601,8 @@ static void MC_snapshot_ignore_restore(mc_snapshot_t snapshot)
   unsigned int cursor = 0;
   s_mc_snapshot_ignored_data_t ignored_data;
   xbt_dynar_foreach (snapshot->ignored_data, cursor, ignored_data) {
-    MC_process_write(snapshot->process,
-      ignored_data.data, ignored_data.start, ignored_data.size);
+    snapshot->process->write_bytes(ignored_data.data, ignored_data.size,
+      remote(ignored_data.start));
   }
 }