![]()  | 
  
    BSHA3
    0.17.99
    
   P2P Blockchain, based on Bitcoin 
   | 
 
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 | 
| static std::once_flag | init_flag | 
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 380 of file lockedpool.cpp.
      
  | 
  staticprivate | 
Create a new LockedPoolManager specialized to the OS.
Definition at line 391 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 385 of file lockedpool.cpp.
      
  | 
  staticprivate | 
Definition at line 236 of file lockedpool.h.
      
  | 
  staticprivate | 
Definition at line 237 of file lockedpool.h.
 1.8.14