aboutsummaryrefslogtreecommitdiff
path: root/src/support/allocators
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2016-11-02 11:16:19 +0100
committerWladimir J. van der Laan <[email protected]>2016-11-02 11:16:29 +0100
commitf8723d231812045b8ccd205eac71deeab43a168b (patch)
treee69d7e4a7b9c3da52bffdce1b9ba9879e4038468 /src/support/allocators
parentMerge #9032: test: Add format-dependent comparison to bctest (diff)
parentbench: Add benchmark for lockedpool allocation/deallocation (diff)
downloaddiscoin-f8723d231812045b8ccd205eac71deeab43a168b.tar.xz
discoin-f8723d231812045b8ccd205eac71deeab43a168b.zip
Merge #8753: Locked memory manager
444c673 bench: Add benchmark for lockedpool allocation/deallocation (Wladimir J. van der Laan) 6567999 rpc: Add `getmemoryinfo` call (Wladimir J. van der Laan) 4536148 support: Add LockedPool (Wladimir J. van der Laan) f4d1fc2 wallet: Get rid of LockObject and UnlockObject calls in key.h (Wladimir J. van der Laan) 999e4c9 wallet: Change CCrypter to use vectors with secure allocator (Wladimir J. van der Laan)
Diffstat (limited to 'src/support/allocators')
-rw-r--r--src/support/allocators/secure.h12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/support/allocators/secure.h b/src/support/allocators/secure.h
index 1ec40fe83..67064314e 100644
--- a/src/support/allocators/secure.h
+++ b/src/support/allocators/secure.h
@@ -6,7 +6,8 @@
#ifndef BITCOIN_SUPPORT_ALLOCATORS_SECURE_H
#define BITCOIN_SUPPORT_ALLOCATORS_SECURE_H
-#include "support/pagelocker.h"
+#include "support/lockedpool.h"
+#include "support/cleanse.h"
#include <string>
@@ -39,20 +40,15 @@ struct secure_allocator : public std::allocator<T> {
T* allocate(std::size_t n, const void* hint = 0)
{
- T* p;
- p = std::allocator<T>::allocate(n, hint);
- if (p != NULL)
- LockedPageManager::Instance().LockRange(p, sizeof(T) * n);
- return p;
+ return static_cast<T*>(LockedPoolManager::Instance().alloc(sizeof(T) * n));
}
void deallocate(T* p, std::size_t n)
{
if (p != NULL) {
memory_cleanse(p, sizeof(T) * n);
- LockedPageManager::Instance().UnlockRange(p, sizeof(T) * n);
}
- std::allocator<T>::deallocate(p, n);
+ LockedPoolManager::Instance().free(p);
}
};