A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into clean_events
[simgrid.git]
/
src
/
mc
/
RegionSnapshot.hpp
diff --git
a/src/mc/RegionSnapshot.hpp
b/src/mc/RegionSnapshot.hpp
index
f1007ac
..
8fd9e60
100644
(file)
--- a/
src/mc/RegionSnapshot.hpp
+++ b/
src/mc/RegionSnapshot.hpp
@@
-13,12
+13,12
@@
#include <memory>
#include <vector>
#include <memory>
#include <vector>
-#include
<xbt/base.h>
+#include
"xbt/base.h"
-#include "src/mc/remote_ptr.hpp"
-#include "src/mc/PageStore.hpp"
#include "src/mc/AddressSpace.hpp"
#include "src/mc/ChunkedData.hpp"
#include "src/mc/AddressSpace.hpp"
#include "src/mc/ChunkedData.hpp"
+#include "src/mc/PageStore.hpp"
+#include "src/mc/remote/RemotePtr.hpp"
namespace simgrid {
namespace mc {
namespace simgrid {
namespace mc {
@@
-29,7
+29,6
@@
enum class RegionType {
Data = 2
};
Data = 2
};
-// TODO, use Boost.Variant instead of this
enum class StorageType {
NoData = 0,
Flat = 1,
enum class StorageType {
NoData = 0,
Flat = 1,
@@
-37,37
+36,46
@@
enum class StorageType {
Privatized = 3
};
Privatized = 3
};
-class
b
uffer {
-p
ublic
:
+class
B
uffer {
+p
rivate
:
enum class Type {
Malloc,
Mmap
};
enum class Type {
Malloc,
Mmap
};
-private:
void* data_ = nullptr;
std::size_t size_;
Type type_ = Type::Malloc;
void* data_ = nullptr;
std::size_t size_;
Type type_ = Type::Malloc;
-public:
- buffer() {}
- buffer(std::size_t size, Type type = Type::Malloc);
- buffer(void* data, std::size_t size, Type type = Type::Malloc) :
+private:
+ Buffer(std::size_t size, Type type = Type::Malloc);
+ Buffer(void* data, std::size_t size, Type type = Type::Malloc) :
data_(data), size_(size), type_(type) {}
data_(data), size_(size), type_(type) {}
+public:
+ Buffer() = default;
void clear() noexcept;
void clear() noexcept;
- ~buffer() noexcept { clear(); }
+ ~Buffer() noexcept { clear(); }
+
+ static Buffer malloc(std::size_t size)
+ {
+ return Buffer(size, Type::Malloc);
+ }
+ static Buffer mmap(std::size_t size)
+ {
+ return Buffer(size, Type::Mmap);
+ }
// No copy
// No copy
-
buffer(b
uffer const& buffer) = delete;
-
buffer& operator=(b
uffer const& buffer) = delete;
+
Buffer(B
uffer const& buffer) = delete;
+
Buffer& operator=(B
uffer const& buffer) = delete;
// Move
// Move
-
buffer(b
uffer&& that) noexcept
+
Buffer(B
uffer&& that) noexcept
: data_(that.data_), size_(that.size_), type_(that.type_)
{
that.data_ = nullptr;
that.size_ = 0;
that.type_ = Type::Malloc;
}
: data_(that.data_), size_(that.size_), type_(that.type_)
{
that.data_ = nullptr;
that.size_ = 0;
that.type_ = Type::Malloc;
}
-
buffer& operator=(b
uffer&& that) noexcept
+
Buffer& operator=(B
uffer&& that) noexcept
{
clear();
data_ = that.data_;
{
clear();
data_ = that.data_;
@@
-82,7
+90,6
@@
public:
void* get() { return data_; }
const void* get() const { return data_; }
std::size_t size() const { return size_; }
void* get() { return data_; }
const void* get() const { return data_; }
std::size_t size() const { return size_; }
- Type type() const { return type_; }
};
/** A copy/snapshot of a given memory region
};
/** A copy/snapshot of a given memory region
@@
-96,7
+103,7
@@
public:
*
* * privatized (SMPI global variable privatisation).
*
*
* * privatized (SMPI global variable privatisation).
*
- * This is handled with a variant based approch:
+ * This is handled with a variant based appro
a
ch:
*
* * `storage_type` identified the type of storage;
*
*
* * `storage_type` identified the type of storage;
*
@@
-130,7
+137,7
@@
private:
* */
void *permanent_addr_;
* */
void *permanent_addr_;
-
b
uffer flat_data_;
+
B
uffer flat_data_;
ChunkedData page_numbers_;
std::vector<RegionSnapshot> privatized_regions_;
public:
ChunkedData page_numbers_;
std::vector<RegionSnapshot> privatized_regions_;
public:
@@
-150,7
+157,7
@@
public:
size_(size),
permanent_addr_(permanent_addr)
{}
size_(size),
permanent_addr_(permanent_addr)
{}
- ~RegionSnapshot()
{}
+ ~RegionSnapshot()
= default;
RegionSnapshot(RegionSnapshot const&) = default;
RegionSnapshot& operator=(RegionSnapshot const&) = default;
RegionSnapshot(RegionSnapshot&& that)
RegionSnapshot(RegionSnapshot const&) = default;
RegionSnapshot& operator=(RegionSnapshot const&) = default;
RegionSnapshot(RegionSnapshot&& that)
@@
-203,16
+210,16
@@
public:
page_numbers_.clear();
privatized_regions_.clear();
}
page_numbers_.clear();
privatized_regions_.clear();
}
-
- void flat_data(
b
uffer data)
+
+ void flat_data(
B
uffer data)
{
storage_type_ = StorageType::Flat;
flat_data_ = std::move(data);
page_numbers_.clear();
privatized_regions_.clear();
}
{
storage_type_ = StorageType::Flat;
flat_data_ = std::move(data);
page_numbers_.clear();
privatized_regions_.clear();
}
- const
b
uffer& flat_data() const { return flat_data_; }
-
b
uffer& flat_data() { return flat_data_; }
+ const
B
uffer& flat_data() const { return flat_data_; }
+
B
uffer& flat_data() { return flat_data_; }
void page_data(ChunkedData page_data)
{
void page_data(ChunkedData page_data)
{
@@
-244,14
+251,14
@@
public:
// Other getters
// Other getters
-
remote_p
tr<void> start() const { return remote(start_addr_); }
-
remote_p
tr<void> end() const { return remote((char*)start_addr_ + size_); }
-
remote_p
tr<void> permanent_address() const { return remote(permanent_addr_); }
+
RemoteP
tr<void> start() const { return remote(start_addr_); }
+
RemoteP
tr<void> end() const { return remote((char*)start_addr_ + size_); }
+
RemoteP
tr<void> permanent_address() const { return remote(permanent_addr_); }
std::size_t size() const { return size_; }
StorageType storage_type() const { return storage_type_; }
RegionType region_type() const { return region_type_; }
std::size_t size() const { return size_; }
StorageType storage_type() const { return storage_type_; }
RegionType region_type() const { return region_type_; }
- bool contain(
remote_p
tr<void> p) const
+ bool contain(
RemoteP
tr<void> p) const
{
return p >= start() && p < end();
}
{
return p >= start() && p < end();
}
@@
-259,19
+266,17
@@
public:
RegionSnapshot privatized_region(
RegionType region_type, void *start_addr, void* permanent_addr,
RegionSnapshot privatized_region(
RegionType region_type, void *start_addr, void* permanent_addr,
- std::size_t size
, const RegionSnapshot* ref_region
);
+ std::size_t size);
RegionSnapshot dense_region(
RegionType type, void *start_addr, void* data_addr, std::size_t size);
simgrid::mc::RegionSnapshot sparse_region(
RegionSnapshot dense_region(
RegionType type, void *start_addr, void* data_addr, std::size_t size);
simgrid::mc::RegionSnapshot sparse_region(
- RegionType type, void *start_addr, void* data_addr, std::size_t size,
- RegionSnapshot const* ref_region);
+ RegionType type, void *start_addr, void* data_addr, std::size_t size);
simgrid::mc::RegionSnapshot region(
simgrid::mc::RegionSnapshot region(
- RegionType type, void *start_addr, void* data_addr, std::size_t size,
- RegionSnapshot const* ref_region);
+ RegionType type, void *start_addr, void* data_addr, std::size_t size);
}
}
}
}
-typedef class simgrid::mc::RegionSnapshot s_mc_mem_region_t
, *mc_mem_region_t
;
-
+typedef class simgrid::mc::RegionSnapshot s_mc_mem_region_t;
+typedef s_mc_mem_region_t* mc_mem_region_t;
#endif
#endif