X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fce872a4f145c997f146ea0d098a77549a47bd0b..347996b4a10c4e8579080692afa60e0afb88b60a:/src/mc/Process.hpp diff --git a/src/mc/Process.hpp b/src/mc/Process.hpp index 7cb054d81c..8780e3cc5a 100644 --- a/src/mc/Process.hpp +++ b/src/mc/Process.hpp @@ -28,15 +28,14 @@ #include "src/simix/popping_private.h" #include "src/simix/smx_private.h" -#include "../xbt/memory_map.hpp" +#include "src/xbt/memory_map.hpp" -#include "mc_forward.hpp" -#include "mc_base.h" -#include "mc_mmalloc.h" // std_heap -#include "AddressSpace.hpp" -#include "mc_protocol.h" - -#include "ObjectInformation.hpp" +#include "src/mc/mc_forward.hpp" +#include "src/mc/mc_base.h" +#include "src/mc/mc_mmalloc.h" // std_heap +#include "src/mc/AddressSpace.hpp" +#include "src/mc/mc_protocol.h" +#include "src/mc/ObjectInformation.hpp" // Those flags are used to track down which cached information // is still up to date and which information needs to be updated. @@ -54,6 +53,13 @@ struct IgnoredRegion { size_t size; }; +struct IgnoredHeapRegion { + int block; + int fragment; + void *address; + size_t size; +}; + /** Representation of a process */ class Process final : public AddressSpace { @@ -69,7 +75,7 @@ public: // Read memory: const void* read_bytes(void* buffer, std::size_t size, remote_ptr address, int process_index = ProcessIndexAny, - ReadMode mode = Normal) const override; + ReadOptions options = ReadOptions::none()) const override; void read_variable(const char* name, void* target, size_t size) const; template T read_variable(const char *name) const @@ -168,6 +174,24 @@ public: info->remove_global_variable(name); } + std::vector& stack_areas() + { + return stack_areas_; + } + std::vector const& stack_areas() const + { + return stack_areas_; + } + + std::vector const& ignored_heap() const + { + return ignored_heap_; + } + void ignore_heap(IgnoredHeapRegion const& region); + void unignore_heap(void *address, size_t size); + + void ignore_local_variable(const char *var_name, const char *frame_name); + private: void init_memory_map_info(); void refresh_heap(); @@ -183,6 +207,9 @@ private: int clear_refs_fd_; int pagemap_fd_; bool privatized_; + std::vector stack_areas_; + std::vector ignored_heap_; + public: // object info // TODO, make private (first, objectify simgrid::mc::ObjectInformation*) std::vector> object_infos;