region->permanent_addr = permanent_addr;
region->size = size;
region->flat.data = xbt_malloc(size);
- MC_process_read(&mc_model_checker->process, MC_ADDRESS_SPACE_READ_FLAGS_NONE,
+ MC_process_read(&mc_model_checker->process(), MC_ADDRESS_SPACE_READ_FLAGS_NONE,
region->flat.data, permanent_addr, size,
MC_PROCESS_INDEX_DISABLED);
XBT_DEBUG("New region : type : %d, data : %p (real addr %p), size : %zu",
break;
case MC_REGION_STORAGE_TYPE_FLAT:
- MC_process_write(&mc_model_checker->process, region->flat.data,
+ MC_process_write(&mc_model_checker->process(), region->flat.data,
region->permanent_addr, region->size);
break;
case MC_REGION_STORAGE_TYPE_CHUNKED:
- mc_region_restore_sparse(&mc_model_checker->process, region);
+ mc_region_restore_sparse(&mc_model_checker->process(), region);
break;
case MC_REGION_STORAGE_TYPE_PRIVATIZED:
// Read smpi_privatisation_regions from MCed:
smpi_privatisation_region_t remote_smpi_privatisation_regions;
- MC_process_read_variable(&mc_model_checker->process,
+ MC_process_read_variable(&mc_model_checker->process(),
"smpi_privatisation_regions",
&remote_smpi_privatisation_regions, sizeof(remote_smpi_privatisation_regions));
s_smpi_privatisation_region_t privatisation_regions[process_count];
- MC_process_read_simple(&mc_model_checker->process, &privatisation_regions,
+ MC_process_read_simple(&mc_model_checker->process(), &privatisation_regions,
remote_smpi_privatisation_regions, sizeof(privatisation_regions));
for (size_t i = 0; i < process_count; i++) {
#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_process_read_variable(&mc_model_checker->process(),
"smpi_loaded_page", &snapshot->privatization_index,
sizeof(snapshot->privatization_index));
} else
static void mc_fill_local_variables_values(mc_stack_frame_t stack_frame,
dw_frame_t scope, int process_index, xbt_dynar_t result)
{
- mc_process_t process = &mc_model_checker->process;
+ mc_process_t process = &mc_model_checker->process();
void *ip = (void *) stack_frame->ip;
if (ip < scope->low_pc || ip >= scope->high_pc)
current_variable->object_info,
&(stack_frame->unw_cursor),
(void *) stack_frame->frame_base,
- (mc_address_space_t) &mc_model_checker->process, process_index);
+ (mc_address_space_t) &mc_model_checker->process(), process_index);
switch(mc_get_location_type(&location)) {
case MC_LOCATION_TYPE_ADDRESS:
static xbt_dynar_t MC_unwind_stack_frames(mc_unw_context_t stack_context)
{
- mc_process_t process = &mc_model_checker->process;
+ mc_process_t process = &mc_model_checker->process();
xbt_dynar_t result =
xbt_dynar_new(sizeof(mc_stack_frame_t), MC_stack_frame_free_voipd);
// Read the context from remote process:
unw_context_t context;
- MC_process_read_simple(&mc_model_checker->process,
+ MC_process_read_simple(&mc_model_checker->process(),
&context, (unw_context_t*) current_stack->context, sizeof(context));
st->context = xbt_new0(s_mc_unw_context_t, 1);
- if (mc_unw_init_context(st->context, &mc_model_checker->process,
+ if (mc_unw_init_context(st->context, &mc_model_checker->process(),
&context) < 0) {
xbt_die("Could not initialise the libunwind context.");
}
// Copy the memory:
unsigned int cursor = 0;
mc_checkpoint_ignore_region_t region;
- xbt_dynar_foreach (mc_model_checker->process.checkpoint_ignore, cursor, region) {
+ xbt_dynar_foreach (mc_model_checker->process().checkpoint_ignore, cursor, region) {
s_mc_snapshot_ignored_data_t ignored_data;
ignored_data.start = region->addr;
ignored_data.size = region->size;
}
// Zero the memory:
- xbt_dynar_foreach (mc_model_checker->process.checkpoint_ignore, cursor, region) {
+ xbt_dynar_foreach (mc_model_checker->process().checkpoint_ignore, cursor, region) {
MC_process_clear_memory(snapshot->process, region->addr, region->size);
}
}
}
-/** @brief Can we remove this snapshot?
- *
- * Some snapshots cannot be removed (yet) because we need them
- * at this point.
- *
- * @param snapshot
- */
-int mc_important_snapshot(mc_snapshot_t snapshot)
-{
- // We need this snapshot in order to know which
- // pages needs to be stored in the next snapshot.
- // This field is only non-NULL when using soft-dirty
- // page tracking.
- if (snapshot == mc_model_checker->parent_snapshot)
- return true;
-
- return false;
-}
-
static void MC_get_current_fd(mc_snapshot_t snapshot)
{
{
XBT_DEBUG("Taking snapshot %i", num_state);
- mc_process_t mc_process = &mc_model_checker->process;
+ mc_process_t mc_process = &mc_model_checker->process();
mc_snapshot_t snapshot = xbt_new0(s_mc_snapshot_t, 1);
snapshot->process = mc_process;
snapshot->num_state = num_state;
if (_sg_mc_snapshot_fds)
MC_restore_snapshot_fds(snapshot);
MC_snapshot_ignore_restore(snapshot);
- mc_model_checker->process.cache_flags = 0;
+ mc_model_checker->process().cache_flags = 0;
}
mc_snapshot_t simcall_HANDLER_mc_snapshot(smx_simcall_t simcall)