diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-11-29 18:15:29 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-11-29 18:40:16 +0300 |
commit | 2aee7cda6c758679145563340ff94fc652670ea1 (patch) | |
tree | 9ea64f4df3b6a7d2444be0fb216793e7032c9460 /library/cpp/ytalloc/impl/bridge.cpp | |
parent | fefd531d45e1854a567b58f4d6a661d3d365ece1 (diff) | |
download | ydb-2aee7cda6c758679145563340ff94fc652670ea1.tar.gz |
Intermediate changes
commit_hash:60e005cdf76d5bff2a370a6b8f35ef4f6792f414
Diffstat (limited to 'library/cpp/ytalloc/impl/bridge.cpp')
-rw-r--r-- | library/cpp/ytalloc/impl/bridge.cpp | 257 |
1 files changed, 0 insertions, 257 deletions
diff --git a/library/cpp/ytalloc/impl/bridge.cpp b/library/cpp/ytalloc/impl/bridge.cpp deleted file mode 100644 index 95a47619982..00000000000 --- a/library/cpp/ytalloc/impl/bridge.cpp +++ /dev/null @@ -1,257 +0,0 @@ -#include "core-inl.h" - -#include <util/system/compiler.h> - -#include <library/cpp/malloc/api/malloc.h> - -#include <library/cpp/yt/memory/memory_tag.h> - -namespace NYT::NYTAlloc { - -//////////////////////////////////////////////////////////////////////////////// -// YTAlloc public API - -#ifdef YT_ALLOC_ENABLED - -void* Allocate(size_t size) -{ - return AllocateInline(size); -} - -void* AllocateSmall(size_t rank) -{ - return AllocateSmallInline(rank); -} - -void* AllocatePageAligned(size_t size) -{ - return AllocatePageAlignedInline(size); -} - -void Free(void* ptr) -{ - FreeInline(ptr); -} - -void FreeNonNull(void* ptr) -{ - FreeNonNullInline(ptr); -} - -size_t GetAllocationSize(const void* ptr) -{ - return GetAllocationSizeInline(ptr); -} - -size_t GetAllocationSize(size_t size) -{ - return GetAllocationSizeInline(size); -} - -#endif - -//////////////////////////////////////////////////////////////////////////////// - -} // namespace NYT::NYTAlloc - -namespace NYT { - -using namespace NYTAlloc; - -//////////////////////////////////////////////////////////////////////////////// -// Memory tags API bridge - -TMemoryTag GetCurrentMemoryTag() -{ - return NYTAlloc::TThreadManager::GetCurrentMemoryTag(); -} - -void SetCurrentMemoryTag(TMemoryTag tag) -{ - TThreadManager::SetCurrentMemoryTag(tag); -} - -void GetMemoryUsageForTags(const TMemoryTag* tags, size_t count, size_t* results) -{ - InitializeGlobals(); - StatisticsManager->GetTaggedMemoryUsage(tags, count, results); -} - -size_t GetMemoryUsageForTag(TMemoryTag tag) -{ - size_t result; - GetMemoryUsageForTags(&tag, 1, &result); - return result; -} - -//////////////////////////////////////////////////////////////////////////////// - -} // namespace NYT - -namespace NYT::NYTAlloc { - -//////////////////////////////////////////////////////////////////////////////// -// Memory zone API bridge - -void SetCurrentMemoryZone(EMemoryZone zone) -{ - TThreadManager::SetCurrentMemoryZone(zone); -} - -EMemoryZone GetCurrentMemoryZone() -{ - return TThreadManager::GetCurrentMemoryZone(); -} - -EMemoryZone GetAllocationMemoryZone(const void* ptr) -{ - auto uintptr = reinterpret_cast<uintptr_t>(ptr); - if (uintptr >= MinUntaggedSmallPtr && uintptr < MaxUntaggedSmallPtr || - uintptr >= MinTaggedSmallPtr && uintptr < MaxTaggedSmallPtr || - uintptr >= DumpableLargeZoneStart && uintptr < DumpableLargeZoneEnd) - { - return EMemoryZone::Normal; - } else if (uintptr >= UndumpableLargeZoneStart && uintptr < UndumpableLargeZoneEnd) { - return EMemoryZone::Undumpable; - } else { - return EMemoryZone::Unknown; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Fiber id API - -void SetCurrentFiberId(TFiberId id) -{ - TThreadManager::SetCurrentFiberId(id); -} - -TFiberId GetCurrentFiberId() -{ - return TThreadManager::GetCurrentFiberId(); -} - -//////////////////////////////////////////////////////////////////////////////// - -} // namespace NYT::NYTAlloc - -//////////////////////////////////////////////////////////////////////////////// -// Libc malloc bridge - -#ifdef YT_ALLOC_ENABLED - -using namespace NYT::NYTAlloc; - -extern "C" void* malloc(size_t size) -{ - return AllocateInline(size); -} - -extern "C" void* valloc(size_t size) -{ - return AllocatePageAlignedInline(size); -} - -extern "C" void* aligned_alloc(size_t alignment, size_t size) -{ - // Alignment must be a power of two. - Y_ABORT_UNLESS((alignment & (alignment - 1)) == 0); - // Alignment must not exceed the page size. - Y_ABORT_UNLESS(alignment <= PageSize); - if (alignment <= 16) { - // Proper alignment here is automatic. - return Allocate(size); - } else { - return AllocatePageAligned(size); - } -} - -extern "C" void* pvalloc(size_t size) -{ - return valloc(AlignUp(size, PageSize)); -} - -extern "C" int posix_memalign(void** ptrPtr, size_t alignment, size_t size) -{ - *ptrPtr = aligned_alloc(alignment, size); - return 0; -} - -extern "C" void* memalign(size_t alignment, size_t size) -{ - return aligned_alloc(alignment, size); -} - -extern "C" void* __libc_memalign(size_t alignment, size_t size) -{ - return aligned_alloc(alignment, size); -} - -extern "C" void free(void* ptr) -{ - FreeInline(ptr); -} - -extern "C" void* calloc(size_t n, size_t elemSize) -{ - // Overflow check. - auto size = n * elemSize; - if (elemSize != 0 && size / elemSize != n) { - return nullptr; - } - - void* result = Allocate(size); - ::memset(result, 0, size); - return result; -} - -extern "C" void cfree(void* ptr) -{ - Free(ptr); -} - -extern "C" void* realloc(void* oldPtr, size_t newSize) -{ - if (!oldPtr) { - return Allocate(newSize); - } - - if (newSize == 0) { - Free(oldPtr); - return nullptr; - } - - void* newPtr = Allocate(newSize); - size_t oldSize = GetAllocationSize(oldPtr); - ::memcpy(newPtr, oldPtr, std::min(oldSize, newSize)); - Free(oldPtr); - return newPtr; -} - -extern "C" size_t malloc_usable_size(void* ptr) noexcept -{ - return GetAllocationSize(ptr); -} - -extern "C" size_t nallocx(size_t size, int /* flags */) noexcept -{ - return GetAllocationSize(size); -} - -#endif - -namespace NMalloc { - -//////////////////////////////////////////////////////////////////////////////// -// Arcadia malloc API bridge - -TMallocInfo MallocInfo() -{ - TMallocInfo info; - info.Name = "ytalloc"; - return info; -} - -//////////////////////////////////////////////////////////////////////////////// - -} // namespace NMalloc |