X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ac76cbcb5112189e2b00370b708ecfa9b08c7191..f18e17b472638518f39ec00fdafbc3355c070c15:/src/mc/PageStore.hpp diff --git a/src/mc/PageStore.hpp b/src/mc/PageStore.hpp index 4e2e53e50b..4226ffd799 100644 --- a/src/mc/PageStore.hpp +++ b/src/mc/PageStore.hpp @@ -15,19 +15,18 @@ #include -#include "mc_mmu.h" -#include "mc_forward.hpp" +#include "src/mc/mc_mmu.h" +#include "src/mc/mc_forward.hpp" namespace simgrid { namespace mc { /** @brief Storage for snapshot memory pages * - * The first (lower) layer of the per-page snapshot mechanism is a page - * store: it's responsibility is to store immutable shareable - * reference-counted memory pages independently of the snapshoting - * logic. Snapshot management and representation, soft-dirty tracking is - * handled to an higher layer. READMORE + * The first (lower) layer of the per-page snapshot mechanism is a page store: + * its responsibility is to store immutable sharable reference-counted memory + * pages independently of the snapshotting logic. Snapshot management and + * representation is handled to an higher layer. READMORE * * Data structure: * @@ -112,8 +111,7 @@ public: // Methods /** @brief Decrement the reference count for a given page * - * Decrement the reference count of this page. Used when a snapshot is - * destroyed. + * Decrement the reference count of this page. Used when a snapshot is destroyed. * * If the reference count reaches zero, the page is recycled: * it is added to the `free_pages_` list and removed from the `hash_index_`. @@ -131,10 +129,10 @@ public: // Methods * changed since the previous cnapshot/restoration and we can avoid * hashing the page, comparing byte-per-byte to candidates. * */ - void ref_page(std::size_t pageno); + void ref_page(size_t pageno); /** @brief Store a page in the page store */ - size_t store_page(void* page); + std::size_t store_page(void* page); /** @brief Get a page from its page number * @@ -174,7 +172,7 @@ void PageStore::ref_page(size_t pageno) inline __attribute__((always_inline)) const void* PageStore::get_page(std::size_t pageno) const { - return mc_page_from_number(this->memory_, pageno); + return (void*) simgrid::mc::mmu::join(pageno, (std::uintptr_t) this->memory_); } inline __attribute__((always_inline)) @@ -184,7 +182,7 @@ std::size_t PageStore::get_ref(std::size_t pageno) } inline __attribute__((always_inline)) -size_t PageStore::size() { +std::size_t PageStore::size() { return this->top_index_ - this->free_pages_.size(); }