diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-14 19:51:20 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-14 19:51:20 +0000 |
commit | ac7f0e10002fbfcfcc86707326571d94729c131b (patch) | |
tree | b8306b95e9f5dcb4b7e341e21980738b5256ecfe /vespamalloc | |
parent | 8d03750414ff4382e7a21a21640be7d3e1fcd4f2 (diff) |
Remove tracking of mmapping on unmap.
Diffstat (limited to 'vespamalloc')
-rw-r--r-- | vespamalloc/src/tests/test1/CMakeLists.txt | 4 | ||||
-rw-r--r-- | vespamalloc/src/tests/test1/testatomic.cpp | 27 | ||||
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/mmappool.cpp | 1 |
3 files changed, 32 insertions, 0 deletions
diff --git a/vespamalloc/src/tests/test1/CMakeLists.txt b/vespamalloc/src/tests/test1/CMakeLists.txt index 71e9ce272f9..dd7c92a4dac 100644 --- a/vespamalloc/src/tests/test1/CMakeLists.txt +++ b/vespamalloc/src/tests/test1/CMakeLists.txt @@ -2,6 +2,10 @@ vespa_add_executable(vespamalloc_testatomic_app TEST SOURCES testatomic.cpp + ../../vespamalloc/malloc/mmappool.cpp + ../../vespamalloc/malloc/common.cpp + DEPENDS + vespamalloc_util EXTERNAL_DEPENDS ${VESPA_ATOMIC_LIB} ) diff --git a/vespamalloc/src/tests/test1/testatomic.cpp b/vespamalloc/src/tests/test1/testatomic.cpp index 1f0b2acaeef..76402c2570d 100644 --- a/vespamalloc/src/tests/test1/testatomic.cpp +++ b/vespamalloc/src/tests/test1/testatomic.cpp @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include <vespa/vespalib/testkit/testapp.h> #include <vespamalloc/malloc/allocchunk.h> +#include <vespamalloc/malloc/mmappool.h> TEST("verify lock freeness of atomics"){ { @@ -20,4 +21,30 @@ TEST("verify lock freeness of atomics"){ } +TEST("test explicit mmap/munmap") { + vespamalloc::MMapPool mmapPool; + EXPECT_EQUAL(0u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0u, mmapPool.getMmappedBytes()); + + void * mmap1 = mmapPool.mmap(0xe000); + EXPECT_EQUAL(1u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0xe000u, mmapPool.getMmappedBytes()); + mmapPool.unmap(mmap1); + EXPECT_EQUAL(0u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0u, mmapPool.getMmappedBytes()); + mmap1 = mmapPool.mmap(0xe000); + EXPECT_EQUAL(1u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0xe000u, mmapPool.getMmappedBytes()); + + void * mmap2 = mmapPool.mmap(0x1e000); + EXPECT_EQUAL(2u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0x2c000u, mmapPool.getMmappedBytes()); + mmapPool.unmap(mmap1); + EXPECT_EQUAL(1u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0x1e000u, mmapPool.getMmappedBytes()); + mmapPool.unmap(mmap2); + EXPECT_EQUAL(0u, mmapPool.getNumMappings()); + EXPECT_EQUAL(0u, mmapPool.getMmappedBytes()); +} + TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/vespamalloc/src/vespamalloc/malloc/mmappool.cpp b/vespamalloc/src/vespamalloc/malloc/mmappool.cpp index 296471e54a2..e693ce0de46 100644 --- a/vespamalloc/src/vespamalloc/malloc/mmappool.cpp +++ b/vespamalloc/src/vespamalloc/malloc/mmappool.cpp @@ -95,6 +95,7 @@ MMapPool::unmap(void * ptr) { abort(); } sz = found->second._sz; + _mappings.erase(found); } int munmap_ok = ::munmap(ptr, sz); assert(munmap_ok == 0); |