Bitcoin Core 28.99.0
P2P Digital Currency
|
Singleton class to keep track of locked (ie, non-swappable) memory, for use in std::allocator templates. More...
#include <lockedpool.h>
Static Public Member Functions | |
static LockedPoolManager & | Instance () |
Return the current instance, or create it once. More... | |
Private Member Functions | |
LockedPoolManager (std::unique_ptr< LockedPageAllocator > allocator) | |
Static Private Member Functions | |
static void | CreateInstance () |
Create a new LockedPoolManager specialized to the OS. More... | |
static bool | LockingFailed () |
Called when locking fails, warn the user here. More... | |
Static Private Attributes | |
static LockedPoolManager * | _instance = nullptr |
Additional Inherited Members | |
Public Types inherited from LockedPool | |
typedef bool(* | LockingFailed_Callback) () |
Callback when allocation succeeds but locking fails. More... | |
Public Member Functions inherited from LockedPool | |
LockedPool (std::unique_ptr< LockedPageAllocator > allocator, LockingFailed_Callback lf_cb_in=nullptr) | |
Create a new LockedPool. More... | |
~LockedPool () | |
LockedPool (const LockedPool &other)=delete | |
LockedPool & | operator= (const LockedPool &)=delete |
void * | alloc (size_t size) |
Allocate size bytes from this arena. More... | |
void | free (void *ptr) |
Free a previously allocated chunk of memory. More... | |
Stats | stats () const |
Get pool usage statistics. More... | |
Static Public Attributes inherited from LockedPool | |
static const size_t | ARENA_SIZE = 256*1024 |
Size of one arena of locked memory. More... | |
static const size_t | ARENA_ALIGN = 16 |
Chunk alignment. More... | |
Singleton class to keep track of locked (ie, non-swappable) memory, for use in std::allocator templates.
Some implementations of the STL allocate memory in some constructors (i.e., see MSVC's vector<T> implementation where it allocates 1 byte of memory in the allocator.) Due to the unpredictable order of static initializers, we have to make sure the LockedPoolManager instance exists before any other STL-based objects that use secure_allocator are created. So instead of having LockedPoolManager also be static-initialized, it is created on demand.
Definition at line 218 of file lockedpool.h.
|
explicitprivate |
Definition at line 377 of file lockedpool.cpp.
|
staticprivate |
Create a new LockedPoolManager specialized to the OS.
Definition at line 388 of file lockedpool.cpp.
|
inlinestatic |
Return the current instance, or create it once.
Definition at line 222 of file lockedpool.h.
|
staticprivate |
Called when locking fails, warn the user here.
Definition at line 382 of file lockedpool.cpp.
|
staticprivate |
Definition at line 237 of file lockedpool.h.