| An arena manages a contiguous region
| of memory by dividing it into chunks.
|
| Memory statistics.
|
| Pool for locked memory chunks.
|
| To avoid sensitive key data from being
| swapped to disk, the memory in this pool
| is locked/pinned.
|
| An arena manages a contiguous region
| of memory. The pool starts out with one
| arena but can grow to multiple arenas
| if the need arises.
|
| Unlike a normal C heap, the administrative
| structures are separate from the managed
| memory. This has been done as the sizes
| and bases of objects are not in themselves
| sensitive information, as to conserve
| precious locked memory. In some operating
| systems the amount of memory that can
| be locked is small.
|
| 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 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.
|
| LockedPageAllocator specialized
| for OSes that don’t try to be special
| snowflakes.
|
| Allocator that locks its contents from
| being paged out of memory and clears
| its contents before deletion.
|