20#ifndef REALM_IB_MEMORY_H
21#define REALM_IB_MEMORY_H
45 bool need_alloc_result,
52 virtual void get_bytes(off_t offset,
void *dst,
size_t size);
53 virtual void put_bytes(off_t offset,
const void *
src,
size_t size);
57 const size_t *sizes, off_t *offsets);
62 void free_multiple(
size_t count,
const off_t *offsets,
const size_t *sizes,
93 const void *data,
size_t msglen,
TimeLimit work_until);
103 const void *data,
size_t msglen,
TimeLimit work_until);
112 const void *data,
size_t msglen,
TimeLimit work_until);
120 const void *data,
size_t msglen,
TimeLimit work_until);
129 const void *data,
size_t msglen,
TimeLimit work_until);
136 const void *data,
size_t msglen,
TimeLimit work_until);
Definition ib_memory.h:30
off_t do_alloc(size_t size)
virtual void * get_direct_ptr(off_t offset, size_t size)
std::map< off_t, off_t > free_blocks
Definition ib_memory.h:73
void free_multiple(size_t count, const off_t *offsets, const size_t *sizes, TimeLimit work_until)
PendingIBRequests * satisfy_pending_reqs()
Mutex mutex
Definition ib_memory.h:72
char * base
Definition ib_memory.h:74
virtual AllocationResult allocate_storage_immediate(RegionInstanceImpl *inst, bool need_alloc_result, bool poisoned, TimeLimit work_until)
bool attempt_immediate_allocation(NodeID requestor, uintptr_t req_op, size_t count, const size_t *sizes, off_t *offsets)
PendingIBRequests ** ibreq_tail
Definition ib_memory.h:76
virtual off_t alloc_bytes_local(size_t size)
PendingIBRequests * ibreq_head
Definition ib_memory.h:75
void enqueue_requests(PendingIBRequests *reqs, TimeLimit work_until)
void forward_satisfied_reqs(PendingIBRequests *reqs, TimeLimit work_until)
virtual void put_bytes(off_t offset, const void *src, size_t size)
IBMemory(RuntimeImpl *_runtime_impl, Memory _me, size_t _size, MemoryKind _kind, Memory::Kind _lowlevel_kind, void *prealloc_base, NetworkSegment *_segment)
void free_bytes_local(off_t offset, size_t size, TimeLimit work_until)
void do_free(off_t offset, size_t size)
virtual void get_bytes(off_t offset, void *dst, size_t size)
virtual void release_storage_immediate(RegionInstanceImpl *inst, bool poisoned, TimeLimit work_until)
MemoryKind
Definition mem_impl.h:53
AllocationResult
Definition mem_impl.h:89
Kind
Definition memory.h:59
Definition mem_impl.h:220
Definition inst_impl.h:54
Definition runtime_impl.h:267
#define REALM_INTERNAL_API_EXTERNAL_LINKAGE
Definition compiler_support.h:218
Definition activemsg.h:38
int NodeID
Definition nodeset.h:40
void free_intermediate_buffer(Memory mem, off_t offset, size_t size, TimeLimit work_until)
Definition ib_memory.h:96
unsigned curr_index
Definition ib_memory.h:98
unsigned count
Definition ib_memory.h:98
static void handle_message(NodeID sender, const RemoteIBAllocRequestMultiple &args, const void *data, size_t msglen, TimeLimit work_until)
NodeID requestor
Definition ib_memory.h:97
bool immediate
Definition ib_memory.h:100
unsigned first_index
Definition ib_memory.h:98
uintptr_t req_op
Definition ib_memory.h:99
Definition ib_memory.h:85
bool immediate
Definition ib_memory.h:90
static void handle_message(NodeID sender, const RemoteIBAllocRequestSingle &args, const void *data, size_t msglen, TimeLimit work_until)
uintptr_t req_op
Definition ib_memory.h:88
Memory memory
Definition ib_memory.h:86
size_t size
Definition ib_memory.h:87
unsigned req_index
Definition ib_memory.h:89
Definition ib_memory.h:115
static void handle_message(NodeID sender, const RemoteIBAllocResponseMultiple &args, const void *data, size_t msglen, TimeLimit work_until)
uintptr_t req_op
Definition ib_memory.h:116
unsigned first_index
Definition ib_memory.h:117
unsigned count
Definition ib_memory.h:117
Definition ib_memory.h:106
static void handle_message(NodeID sender, const RemoteIBAllocResponseSingle &args, const void *data, size_t msglen, TimeLimit work_until)
off_t offset
Definition ib_memory.h:109
uintptr_t req_op
Definition ib_memory.h:107
unsigned req_index
Definition ib_memory.h:108
Definition ib_memory.h:132
unsigned count
Definition ib_memory.h:133
static void handle_message(NodeID sender, const RemoteIBReleaseMultiple &args, const void *data, size_t msglen, TimeLimit work_until)
Definition ib_memory.h:123
size_t size
Definition ib_memory.h:125
static void handle_message(NodeID sender, const RemoteIBReleaseSingle &args, const void *data, size_t msglen, TimeLimit work_until)
off_t offset
Definition ib_memory.h:126
Memory memory
Definition ib_memory.h:124
NodeID src
Definition ucp_internal.h:1