X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/70fa17187e0b928ff89cb8663426edbf6b74601a..9943e496eb5e20347eac1a7a2533931327355389:/src/mc/mc_snapshot.hpp diff --git a/src/mc/mc_snapshot.hpp b/src/mc/mc_snapshot.hpp index 8c97902ecf..d8d3b0ccfb 100644 --- a/src/mc/mc_snapshot.hpp +++ b/src/mc/mc_snapshot.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -46,8 +46,7 @@ static XBT_ALWAYS_INLINE void* mc_translate_address_region(uintptr_t addr, mc_me simgrid::mc::RegionSnapshot& subregion = region->privatized_data()[process_index]; return mc_translate_address_region(addr, &subregion, process_index); } - case simgrid::mc::StorageType::NoData: - default: + default: // includes StorageType::NoData xbt_die("Storage type not supported"); } } @@ -63,20 +62,20 @@ XBT_PRIVATE mc_mem_region_t mc_get_snapshot_region(const void* addr, const simgr * Some parts of the snapshot are ignored by zeroing them out: the real * values is stored here. * */ -typedef struct s_mc_snapshot_ignored_data { +struct s_mc_snapshot_ignored_data_t { void* start; std::vector data; -} s_mc_snapshot_ignored_data_t; +}; -typedef struct s_fd_infos { +struct s_fd_infos_t { std::string filename; int number; off_t current_position; int flags; -} s_fd_infos_t; +}; /** Information about a given stack frame */ -typedef struct s_mc_stack_frame { +struct s_mc_stack_frame_t { /** Instruction pointer */ unw_word_t ip; /** Stack pointer */ @@ -85,25 +84,26 @@ typedef struct s_mc_stack_frame { simgrid::mc::Frame* frame; std::string frame_name; unw_cursor_t unw_cursor; -} s_mc_stack_frame_t; +}; typedef s_mc_stack_frame_t* mc_stack_frame_t; -typedef struct s_local_variable { +struct s_local_variable_t { simgrid::mc::Frame* subprogram; unsigned long ip; std::string name; simgrid::mc::Type* type; void* address; int region; -} s_local_variable_t; +}; typedef s_local_variable_t* local_variable_t; -typedef struct XBT_PRIVATE s_mc_snapshot_stack { - std::vector local_variables; +struct XBT_PRIVATE s_mc_snapshot_stack_t { + std::vector local_variables; simgrid::mc::UnwindContext context; std::vector stack_frames; int process_index; -} s_mc_snapshot_stack_t, *mc_snapshot_stack_t; +}; +typedef s_mc_snapshot_stack_t* mc_snapshot_stack_t; namespace simgrid { namespace mc { @@ -125,7 +125,7 @@ public: std::vector stacks; std::vector to_ignore; std::uint64_t hash; - std::vector ignored_data; + std::vector ignored_data; std::vector current_fds; }; } @@ -162,8 +162,6 @@ const void* MC_region_read_fragmented(mc_mem_region_t region, void* target, cons int MC_snapshot_region_memcmp(const void* addr1, mc_mem_region_t region1, const void* addr2, mc_mem_region_t region2, std::size_t size); -XBT_PRIVATE int MC_snapshot_memcmp(const void* addr1, simgrid::mc::Snapshot* snapshot1, const void* addr2, - simgrid::mc::Snapshot* snapshot2, int process_index, std::size_t size); static XBT_ALWAYS_INLINE const void* mc_snapshot_get_heap_end(simgrid::mc::Snapshot* snapshot) { @@ -190,10 +188,6 @@ static XBT_ALWAYS_INLINE const void* MC_region_read(mc_mem_region_t region, void xbt_assert(region->contain(simgrid::mc::remote(addr)), "Trying to read out of the region boundary."); switch (region->storage_type()) { - case simgrid::mc::StorageType::NoData: - default: - xbt_die("Storage type not supported"); - case simgrid::mc::StorageType::Flat: return (char*)region->flat_data().get() + offset; @@ -203,15 +197,14 @@ static XBT_ALWAYS_INLINE const void* MC_region_read(mc_mem_region_t region, void if (simgrid::mc::mmu::sameChunk((std::uintptr_t)addr, (std::uintptr_t)end)) { // The memory is contained in a single page: return mc_translate_address_region_chunked((uintptr_t)addr, region); - } else { - // The memory spans several pages: - return MC_region_read_fragmented(region, target, addr, size); } + // Otherwise, the memory spans several pages: + return MC_region_read_fragmented(region, target, addr, size); } - // We currently do not pass the process_index to this function so we assume - // that the privatized region has been resolved in the callers: - case simgrid::mc::StorageType::Privatized: + default: + // includes StorageType::NoData and StorageType::Privatized (we currently do not pass the process_index to this + // function so we assume that the privatized region has been resolved in the callers) xbt_die("Storage type not supported"); } }