Files
compute-runtime/shared/source/os_interface/os_memory.cpp
Igor Venevtsev 0bc5e158e5 Pass preferred base address to OSMemory::reserveCpuAddressRange()
Related-To: NEO-4525

Change-Id: I6d97ae41af1a0fba31993683bfc669f79aa5b77b
Signed-off-by: Igor Venevtsev <igor.venevtsev@intel.com>
2020-05-28 11:39:27 +02:00

38 lines
1.3 KiB
C++

/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/os_interface/os_memory.h"
#include "shared/source/helpers/aligned_memory.h"
namespace NEO {
OSMemory::ReservedCpuAddressRange OSMemory::reserveCpuAddressRange(size_t sizeToReserve, size_t alignment) {
return reserveCpuAddressRange(0, sizeToReserve, alignment);
}
OSMemory::ReservedCpuAddressRange OSMemory::reserveCpuAddressRange(void *baseAddress, size_t sizeToReserve, size_t alignment) {
UNRECOVERABLE_IF(0 == alignment);
UNRECOVERABLE_IF(0 != (alignment & (alignment - 1)));
ReservedCpuAddressRange reservedCpuAddressRange;
reservedCpuAddressRange.actualReservedSize = sizeToReserve + alignment;
reservedCpuAddressRange.originalPtr = this->osReserveCpuAddressRange(baseAddress, reservedCpuAddressRange.actualReservedSize);
reservedCpuAddressRange.alignedPtr = alignUp(reservedCpuAddressRange.originalPtr, alignment);
return reservedCpuAddressRange;
}
void OSMemory::releaseCpuAddressRange(const ReservedCpuAddressRange &reservedCpuAddressRange) {
if (reservedCpuAddressRange.originalPtr != nullptr) {
this->osReleaseCpuAddressRange(reservedCpuAddressRange.originalPtr, reservedCpuAddressRange.actualReservedSize);
}
}
} // namespace NEO