/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
cloud/blockstore/tools/testing/rdma-test/storage.cpp
67 строк
1 KB
proller
issue-3182: Support 64 KiB platform memory page size (#3232)
25 мар 2025, 14:45
Не верифицирован
25 мар 2025, 14:45
dc38fcc
Код
Авторство
О чём код?
#include "storage.h" #include <cloud/storage/core/libs/common/page_size.h> #include <util/random/random.h> namespace NCloud::NBlockStore { //////////////////////////////////////////////////////////////////////////////// TStorageBuffer IStorage::AllocateBuffer(size_t len) { void* p = aligned_alloc(GetPlatformPageSize(), len); return { static_cast<char*>(p), free }; } //////////////////////////////////////////////////////////////////////////////// ui64 CreateRequestId() { for (;;) { auto requestId = RandomNumber<ui64>(); if (requestId) { return requestId; } } } size_t CopyMemory(const TSgList& dst, TStringBuf src) { const char* ptr = src.data(); size_t bytesLeft = src.length(); size_t bytesCopied = 0; for (auto buffer: dst) { size_t len = Min(bytesLeft, buffer.Size()); if (len) { memcpy((char*)buffer.Data(), ptr, len); ptr += len; bytesLeft -= len; bytesCopied += len; } } return bytesCopied; } size_t CopyMemory(TStringBuf dst, const TSgList& src) { char* ptr = (char*)dst.data(); size_t bytesLeft = dst.length(); size_t bytesCopied = 0; for (auto buffer: src) { size_t len = Min(bytesLeft, buffer.Size()); if (len) { memcpy(ptr, buffer.Data(), len); ptr += len; bytesLeft -= len; bytesCopied += len; } } return bytesCopied; } } // namespace NCloud::NBlockStore