7#include <infiniband/verbs.h>
9#include "rdmapp/detail/noncopyable.h"
10#include "rdmapp/detail/serdes.h"
28template <
class Tag>
class mr;
36 std::shared_ptr<pd> pd_;
45 mr(std::shared_ptr<pd>
pd,
struct ibv_mr *
mr);
73 std::vector<uint8_t> serialize()
const;
87 size_t length()
const;
94 uint32_t rkey()
const;
101 uint32_t lkey()
const;
108template <>
class mr<tags::mr::remote> {
118 static constexpr size_t kSerializedSize =
119 sizeof(addr_) +
sizeof(length_) +
sizeof(rkey_);
130 mr(
void *addr, uint32_t length, uint32_t rkey);
169 detail::deserialize(it,
remote_mr.addr_);
170 detail::deserialize(it,
remote_mr.length_);
171 detail::deserialize(it,
remote_mr.rkey_);
176using local_mr = mr<tags::mr::local>;
177using remote_mr = mr<tags::mr::remote>;
A remote or local memory region.
Definition mr.h:28
Definition noncopyable.h:5
This class is an abstraction of a Protection Domain.
Definition pd.h:20