aboutsummaryrefslogtreecommitdiff
path: root/orc-rt/unittests/SimpleNativeMemoryMapTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'orc-rt/unittests/SimpleNativeMemoryMapTest.cpp')
-rw-r--r--orc-rt/unittests/SimpleNativeMemoryMapTest.cpp135
1 files changed, 69 insertions, 66 deletions
diff --git a/orc-rt/unittests/SimpleNativeMemoryMapTest.cpp b/orc-rt/unittests/SimpleNativeMemoryMapTest.cpp
index c54d791..bb34529 100644
--- a/orc-rt/unittests/SimpleNativeMemoryMapTest.cpp
+++ b/orc-rt/unittests/SimpleNativeMemoryMapTest.cpp
@@ -26,14 +26,14 @@ namespace orc_rt {
struct SPSSimpleNativeMemoryMapSegment;
-/// A SimpleNativeMemoryMap::FinalizeRequest::Segment plus segment content (if
+/// A SimpleNativeMemoryMap::InitializeRequest::Segment plus segment content (if
/// segment content type is regular).
struct TestSNMMSegment
- : public SimpleNativeMemoryMap::FinalizeRequest::Segment {
+ : public SimpleNativeMemoryMap::InitializeRequest::Segment {
TestSNMMSegment(AllocGroup AG, char *Address, size_t Size,
std::vector<char> C = {})
- : SimpleNativeMemoryMap::FinalizeRequest::Segment(
+ : SimpleNativeMemoryMap::InitializeRequest::Segment(
{AG, Address, Size, {}}),
OwnedContent(std::move(C)) {
this->Content = {OwnedContent.data(), OwnedContent.size()};
@@ -60,26 +60,26 @@ public:
}
};
-struct SPSSimpleNativeMemoryMapFinalizeRequest;
+struct SPSSimpleNativeMemoryMapInitializeRequest;
-struct TestSNMMFinalizeRequest {
+struct TestSNMMInitializeRequest {
std::vector<TestSNMMSegment> Segments;
std::vector<AllocActionPair> AAPs;
};
template <>
-class SPSSerializationTraits<SPSSimpleNativeMemoryMapFinalizeRequest,
- TestSNMMFinalizeRequest> {
+class SPSSerializationTraits<SPSSimpleNativeMemoryMapInitializeRequest,
+ TestSNMMInitializeRequest> {
using SPSType = SPSTuple<SPSSequence<SPSSimpleNativeMemoryMapSegment>,
SPSSequence<SPSAllocActionPair>>;
public:
- static size_t size(const TestSNMMFinalizeRequest &FR) {
- return SPSType::AsArgList::size(FR.Segments, FR.AAPs);
+ static size_t size(const TestSNMMInitializeRequest &IR) {
+ return SPSType::AsArgList::size(IR.Segments, IR.AAPs);
}
static bool serialize(SPSOutputBuffer &OB,
- const TestSNMMFinalizeRequest &FR) {
- return SPSType::AsArgList::serialize(OB, FR.Segments, FR.AAPs);
+ const TestSNMMInitializeRequest &IR) {
+ return SPSType::AsArgList::serialize(OB, IR.Segments, IR.AAPs);
}
};
@@ -118,24 +118,26 @@ static void snmm_releaseMultiple(OnCompleteFn &&OnComplete,
}
template <typename OnCompleteFn>
-static void snmm_finalize(OnCompleteFn &&OnComplete,
- SimpleNativeMemoryMap *Instance,
- TestSNMMFinalizeRequest FR) {
+static void snmm_initialize(OnCompleteFn &&OnComplete,
+ SimpleNativeMemoryMap *Instance,
+ TestSNMMInitializeRequest IR) {
using SPSSig = SPSExpected<SPSExecutorAddr>(
- SPSExecutorAddr, SPSSimpleNativeMemoryMapFinalizeRequest);
+ SPSExecutorAddr, SPSSimpleNativeMemoryMapInitializeRequest);
SPSWrapperFunction<SPSSig>::call(
- DirectCaller(nullptr, orc_rt_SimpleNativeMemoryMap_finalize_sps_wrapper),
- std::forward<OnCompleteFn>(OnComplete), Instance, std::move(FR));
+ DirectCaller(nullptr,
+ orc_rt_SimpleNativeMemoryMap_initialize_sps_wrapper),
+ std::forward<OnCompleteFn>(OnComplete), Instance, std::move(IR));
}
template <typename OnCompleteFn>
-static void snmm_deallocateMultiple(OnCompleteFn &&OnComplete,
- SimpleNativeMemoryMap *Instance,
- span<void *> Base) {
+static void snmm_deinitializeMultiple(OnCompleteFn &&OnComplete,
+ SimpleNativeMemoryMap *Instance,
+ span<void *> Base) {
using SPSSig = SPSError(SPSExecutorAddr, SPSSequence<SPSExecutorAddr>);
SPSWrapperFunction<SPSSig>::call(
- DirectCaller(nullptr,
- orc_rt_SimpleNativeMemoryMap_deallocateMultiple_sps_wrapper),
+ DirectCaller(
+ nullptr,
+ orc_rt_SimpleNativeMemoryMap_deinitializeMultiple_sps_wrapper),
std::forward<OnCompleteFn>(OnComplete), Instance, Base);
}
@@ -180,9 +182,9 @@ read_value_sps_allocaction(const char *ArgData, size_t ArgSize) {
TEST(SimpleNativeMemoryMap, FullPipelineForOneRWSegment) {
// Test that we can:
// 1. reserve some address space.
- // 2. finalize a range within it as read/write, and that finalize actions
+ // 2. initialize a range within it as read/write, and that finalize actions
// are applied as expected.
- // 3. deallocate the finalized range, with deallocation actions applied as
+ // 3. deinitialize the initialized range, with deallocation actions applied as
// expected.
// 4. release the address range.
@@ -191,12 +193,13 @@ TEST(SimpleNativeMemoryMap, FullPipelineForOneRWSegment) {
snmm_reserve(waitFor(ReserveAddr), SNMM.get(), 1024 * 1024 * 1024);
void *Addr = cantFail(cantFail(ReserveAddr.get()));
- std::future<Expected<Expected<void *>>> FinalizeKey;
- TestSNMMFinalizeRequest FR;
- char *FinalizeBase = // Finalize addr at non-zero (64kb) offset from base.
+ std::future<Expected<Expected<void *>>> InitializeKey;
+ TestSNMMInitializeRequest IR;
+ char *InitializeBase = // Initialize addr at non-zero (64kb) offset from base.
reinterpret_cast<char *>(Addr) + 64 * 1024;
uint64_t SentinelValue1 = 0; // Read from pre-filled content
- uint64_t SentinelValue2 = 0; // Written in finalize, read back during dealloc.
+ uint64_t SentinelValue2 =
+ 0; // Written in initialize, read back during dealloc.
uint64_t SentinelValue3 = 42; // Read from zero-filled region.
// Build initial content vector.
@@ -205,45 +208,45 @@ TEST(SimpleNativeMemoryMap, FullPipelineForOneRWSegment) {
memcpy(Content.data(), &SentinelValue3, sizeof(uint64_t));
memcpy(Content.data() + sizeof(uint64_t), &SentinelValue1, sizeof(uint64_t));
- FR.Segments.push_back({MemProt::Read | MemProt::Write, FinalizeBase,
+ IR.Segments.push_back({MemProt::Read | MemProt::Write, InitializeBase,
64 * 1024, std::move(Content)});
// Read initial content into Sentinel 1.
- FR.AAPs.push_back({
+ IR.AAPs.push_back({
*MakeAllocAction<SPSExecutorAddr, SPSExecutorAddr>::from(
read_value_sps_allocaction, ExecutorAddr::fromPtr(&SentinelValue1),
- ExecutorAddr::fromPtr(FinalizeBase)),
+ ExecutorAddr::fromPtr(InitializeBase)),
{} // No dealloc action.
});
// Write value in finalize action, then read back into Sentinel 2.
- FR.AAPs.push_back(
+ IR.AAPs.push_back(
{*MakeAllocAction<SPSExecutorAddr, uint64_t>::from(
write_value_sps_allocaction,
- ExecutorAddr::fromPtr(FinalizeBase) + sizeof(uint64_t),
+ ExecutorAddr::fromPtr(InitializeBase) + sizeof(uint64_t),
uint64_t(42)),
*MakeAllocAction<SPSExecutorAddr, SPSExecutorAddr>::from(
read_value_sps_allocaction, ExecutorAddr::fromPtr(&SentinelValue2),
- ExecutorAddr::fromPtr(FinalizeBase) + sizeof(uint64_t))});
+ ExecutorAddr::fromPtr(InitializeBase) + sizeof(uint64_t))});
// Read first 64 bits of the zero-fill region.
- FR.AAPs.push_back({
+ IR.AAPs.push_back({
*MakeAllocAction<SPSExecutorAddr, SPSExecutorAddr>::from(
read_value_sps_allocaction, ExecutorAddr::fromPtr(&SentinelValue3),
- ExecutorAddr::fromPtr(FinalizeBase) + sizeof(uint64_t) * 2),
+ ExecutorAddr::fromPtr(InitializeBase) + sizeof(uint64_t) * 2),
{} // No dealloc action.
});
- snmm_finalize(waitFor(FinalizeKey), SNMM.get(), std::move(FR));
- void *FinalizeKeyAddr = cantFail(cantFail(FinalizeKey.get()));
+ snmm_initialize(waitFor(InitializeKey), SNMM.get(), std::move(IR));
+ void *InitializeKeyAddr = cantFail(cantFail(InitializeKey.get()));
EXPECT_EQ(SentinelValue1, 42U);
EXPECT_EQ(SentinelValue2, 0U);
EXPECT_EQ(SentinelValue3, 0U);
std::future<Expected<Error>> DeallocResult;
- snmm_deallocateMultiple(waitFor(DeallocResult), SNMM.get(),
- {&FinalizeKeyAddr, 1});
+ snmm_deinitializeMultiple(waitFor(DeallocResult), SNMM.get(),
+ {&InitializeKeyAddr, 1});
cantFail(cantFail(DeallocResult.get()));
EXPECT_EQ(SentinelValue1, 42U);
@@ -255,33 +258,33 @@ TEST(SimpleNativeMemoryMap, FullPipelineForOneRWSegment) {
cantFail(cantFail(ReleaseResult.get()));
}
-TEST(SimpleNativeMemoryMap, ReserveFinalizeShutdown) {
- // Test that memory is deallocated in the case where we reserve and finalize
- // some memory, then just shut down the memory manager.
+TEST(SimpleNativeMemoryMap, ReserveInitializeShutdown) {
+ // Test that memory is deinitialized in the case where we reserve and
+ // initialize some memory, then just shut down the memory manager.
auto SNMM = std::make_unique<SimpleNativeMemoryMap>();
std::future<Expected<Expected<void *>>> ReserveAddr;
snmm_reserve(waitFor(ReserveAddr), SNMM.get(), 1024 * 1024 * 1024);
void *Addr = cantFail(cantFail(ReserveAddr.get()));
- std::future<Expected<Expected<void *>>> FinalizeKey;
- TestSNMMFinalizeRequest FR;
- char *FinalizeBase = // Finalize addr at non-zero (64kb) offset from base.
+ std::future<Expected<Expected<void *>>> InitializeKey;
+ TestSNMMInitializeRequest IR;
+ char *InitializeBase = // Initialize addr at non-zero (64kb) offset from base.
reinterpret_cast<char *>(Addr) + 64 * 1024;
uint64_t SentinelValue = 0;
- FR.Segments.push_back(
- {MemProt::Read | MemProt::Write, FinalizeBase, 64 * 1024});
+ IR.Segments.push_back(
+ {MemProt::Read | MemProt::Write, InitializeBase, 64 * 1024});
- FR.AAPs.push_back(
+ IR.AAPs.push_back(
{*MakeAllocAction<SPSExecutorAddr, uint64_t>::from(
- write_value_sps_allocaction, ExecutorAddr::fromPtr(FinalizeBase),
+ write_value_sps_allocaction, ExecutorAddr::fromPtr(InitializeBase),
uint64_t(42)),
*MakeAllocAction<SPSExecutorAddr, SPSExecutorAddr>::from(
read_value_sps_allocaction, ExecutorAddr::fromPtr(&SentinelValue),
- ExecutorAddr::fromPtr(FinalizeBase))});
- snmm_finalize(waitFor(FinalizeKey), SNMM.get(), std::move(FR));
- cantFail(cantFail(FinalizeKey.get()));
+ ExecutorAddr::fromPtr(InitializeBase))});
+ snmm_initialize(waitFor(InitializeKey), SNMM.get(), std::move(IR));
+ cantFail(cantFail(InitializeKey.get()));
EXPECT_EQ(SentinelValue, 0U);
@@ -292,33 +295,33 @@ TEST(SimpleNativeMemoryMap, ReserveFinalizeShutdown) {
EXPECT_EQ(SentinelValue, 42);
}
-TEST(SimpleNativeMemoryMap, ReserveFinalizeDetachShutdown) {
- // Test that memory is deallocated in the case where we reserve and finalize
- // some memory, then just shut down the memory manager.
+TEST(SimpleNativeMemoryMap, ReserveInitializeDetachShutdown) {
+ // Test that memory is deinitialized in the case where we reserve and
+ // initialize some memory, then just shut down the memory manager.
auto SNMM = std::make_unique<SimpleNativeMemoryMap>();
std::future<Expected<Expected<void *>>> ReserveAddr;
snmm_reserve(waitFor(ReserveAddr), SNMM.get(), 1024 * 1024 * 1024);
void *Addr = cantFail(cantFail(ReserveAddr.get()));
- std::future<Expected<Expected<void *>>> FinalizeKey;
- TestSNMMFinalizeRequest FR;
- char *FinalizeBase = // Finalize addr at non-zero (64kb) offset from base.
+ std::future<Expected<Expected<void *>>> InitializeKey;
+ TestSNMMInitializeRequest IR;
+ char *InitializeBase = // Initialize addr at non-zero (64kb) offset from base.
reinterpret_cast<char *>(Addr) + 64 * 1024;
uint64_t SentinelValue = 0;
- FR.Segments.push_back(
- {MemProt::Read | MemProt::Write, FinalizeBase, 64 * 1024});
+ IR.Segments.push_back(
+ {MemProt::Read | MemProt::Write, InitializeBase, 64 * 1024});
- FR.AAPs.push_back(
+ IR.AAPs.push_back(
{*MakeAllocAction<SPSExecutorAddr, uint64_t>::from(
- write_value_sps_allocaction, ExecutorAddr::fromPtr(FinalizeBase),
+ write_value_sps_allocaction, ExecutorAddr::fromPtr(InitializeBase),
uint64_t(42)),
*MakeAllocAction<SPSExecutorAddr, SPSExecutorAddr>::from(
read_value_sps_allocaction, ExecutorAddr::fromPtr(&SentinelValue),
- ExecutorAddr::fromPtr(FinalizeBase))});
- snmm_finalize(waitFor(FinalizeKey), SNMM.get(), std::move(FR));
- cantFail(cantFail(FinalizeKey.get()));
+ ExecutorAddr::fromPtr(InitializeBase))});
+ snmm_initialize(waitFor(InitializeKey), SNMM.get(), std::move(IR));
+ cantFail(cantFail(InitializeKey.get()));
EXPECT_EQ(SentinelValue, 0U);