VirtualMemory class refactoring.

This commit is contained in:
XMRig 2019-10-06 17:49:15 +07:00
parent 72c9d94390
commit c13c83b902
4 changed files with 39 additions and 37 deletions

View file

@ -38,21 +38,18 @@
#endif
int xmrig::VirtualMemory::m_globalFlags = 0;
xmrig::VirtualMemory::VirtualMemory(size_t size, bool hugePages, size_t align) :
m_size(VirtualMemory::align(size))
{
if (hugePages) {
m_scratchpad = static_cast<uint8_t*>(allocateLargePagesMemory(m_size));
if (m_scratchpad) {
m_flags |= HUGEPAGES;
m_flags.set(FLAG_HUGEPAGES, true);
madvise(m_scratchpad, size, MADV_RANDOM | MADV_WILLNEED);
if (mlock(m_scratchpad, m_size) == 0) {
m_flags |= LOCK;
m_flags.set(FLAG_LOCK, true);
}
return;
@ -70,7 +67,7 @@ xmrig::VirtualMemory::~VirtualMemory()
}
if (isHugePages()) {
if (m_flags & LOCK) {
if (m_flags.test(FLAG_LOCK)) {
munlock(m_scratchpad, m_size);
}
@ -82,6 +79,11 @@ xmrig::VirtualMemory::~VirtualMemory()
}
bool xmrig::VirtualMemory::isHugepagesAvailable()
{
return true;
}
void *xmrig::VirtualMemory::allocateExecutableMemory(size_t size)
{
@ -123,11 +125,8 @@ void xmrig::VirtualMemory::freeLargePagesMemory(void *p, size_t size)
}
void xmrig::VirtualMemory::init(bool hugePages)
void xmrig::VirtualMemory::init()
{
if (hugePages) {
m_globalFlags = HUGEPAGES | HUGEPAGES_AVAILABLE;
}
}