Dash Core  0.12.2.1
P2P Digital Currency
LockedPageManagerBase< Locker > Class Template Reference

#include <pagelocker.h>

Public Member Functions

 LockedPageManagerBase (size_t page_size)
 
 ~LockedPageManagerBase ()
 
void LockRange (void *p, size_t size)
 
void UnlockRange (void *p, size_t size)
 
int GetLockedPageCount ()
 

Private Types

typedef std::map< size_t, int > Histogram
 

Private Attributes

Locker locker
 
boost::mutex mutex
 
size_t page_size
 
size_t page_mask
 
Histogram histogram
 

Detailed Description

template<class Locker>
class LockedPageManagerBase< Locker >

Thread-safe class to keep track of locked (ie, non-swappable) memory pages.

Memory locks do not stack, that is, pages which have been locked several times by calls to mlock() will be unlocked by a single call to munlock(). This can result in keying material ending up in swap when those functions are used naively. This class simulates stacking memory locks by keeping a counter per page.

Note
By using a map from each page base address to lock count, this class is optimized for small objects that span up to a few pages, mostly smaller than a page. To support large allocations, something like an interval tree would be the preferred data structure.

Definition at line 28 of file pagelocker.h.

Member Typedef Documentation

◆ Histogram

template<class Locker>
typedef std::map<size_t, int> LockedPageManagerBase< Locker >::Histogram
private

Definition at line 100 of file pagelocker.h.

Constructor & Destructor Documentation

◆ LockedPageManagerBase()

template<class Locker>
LockedPageManagerBase< Locker >::LockedPageManagerBase ( size_t  page_size)
inline

Definition at line 31 of file pagelocker.h.

◆ ~LockedPageManagerBase()

template<class Locker>
LockedPageManagerBase< Locker >::~LockedPageManagerBase ( )
inline

Definition at line 38 of file pagelocker.h.

Member Function Documentation

◆ GetLockedPageCount()

template<class Locker>
int LockedPageManagerBase< Locker >::GetLockedPageCount ( )
inline

Definition at line 89 of file pagelocker.h.

◆ LockRange()

template<class Locker>
void LockedPageManagerBase< Locker >::LockRange ( void *  p,
size_t  size 
)
inline

Definition at line 44 of file pagelocker.h.

Referenced by secure_allocator< T >::allocate(), CCrypter::CCrypter(), and LockObject().

◆ UnlockRange()

template<class Locker>
void LockedPageManagerBase< Locker >::UnlockRange ( void *  p,
size_t  size 
)
inline

Member Data Documentation

◆ histogram

◆ locker

template<class Locker>
Locker LockedPageManagerBase< Locker >::locker
private

◆ mutex

◆ page_mask

◆ page_size


The documentation for this class was generated from the following file: