rambrain
rambrain::managedMemory Class Referenceabstract

Backend class to handle raw memory and interaction/storage with managedSwap. More...

#include <managedMemory.h>

Inheritance diagram for rambrain::managedMemory:
rambrain::cyclicManagedMemory rambrain::dummyManagedMemory

Public Member Functions

 managedMemory (managedSwap *swap, global_bytesize size=gig)
 Standard constructor. More...
 
virtual ~managedMemory ()
 
void closeSwap ()
 powers down the swap class, ergo a cleanup More...
 
bool setMemoryLimit (global_bytesize size)
 dynamically adjusts allowed ram usage More...
 
global_bytesize getMemoryLimit () const
 returns current memory limit More...
 
global_bytesize getUsedMemory () const
 returns current ram usage More...
 
global_bytesize getSwappedMemory () const
 returns current swap usage More...
 
global_bytesize getFreeSwapMemory () const
 return current swap free capacity More...
 
global_bytesize getTotalSwapMemory () const
 return current swap capacity More...
 
bool setOutOfSwapIsFatal (bool fatal=true)
 set policy what to do when out of memory in both ram and swap More...
 
bool prepareUse (rambrain::managedMemoryChunk &chunk, bool acquireLock=true)
 Triggers swapin of chunk. More...
 
bool setUse (memoryID id)
 Convenience interface for setUse( managedMemoryChunk &chunk, bool writeAccess ) More...
 
bool unsetUse (memoryID id)
 Convenience interface for unsetUse ( managedMemoryChunk &chunk, bool writeAccess ) More...
 
bool setUse (managedMemoryChunk &chunk, bool writeAccess)
 Marks chunk as used and prevents swapout. More...
 
bool unsetUse (managedMemoryChunk &chunk, unsigned int no_unsets=1)
 Marks chunk as unused again. More...
 
unsigned int getNumberOfChildren (const memoryID &id)
 conveniently returns number of children of the memoryChunk with id id More...
 
void printTree (managedMemoryChunk *current=NULL, unsigned int nspaces=0)
 prints the tree of managed objects for further inspection More...
 
void recursiveMfree (memoryID id)
 recursively deletes the objects in memory, first children, then parents. More...
 
void linearMfree ()
 linearly deletes all objects in memory More...
 
void printSwapstats () const
 print statistic about the number, size and efficiency of swapping actions More...
 
void resetSwapstats ()
 reset statistic about the number, size and efficiency of swapping actions More...
 
double getHitsOverMisses ()
 returns current hits over misses rate for accessing elements. More...
 
double getTotalSwappedOutBytes ()
 simple Getter More...
 
double getTotalSwappedInBytes ()
 simple Getter More...
 

Static Public Member Functions

static void signalSwappingCond ()
 signals that a swapping action has completed and memory limits have changed More...
 
static void sigswapstats (int sig)
 static binding that will print out some stats. Compile with cmake -DSWAPSTATS=on and send process SIGUSR1 to call this function More...
 
static void versionInfo ()
 prints out a GIT version info and a diff on this version at compile time More...
 

Static Public Attributes

static const memoryID root = 1
 
static memoryID parent = managedMemory::root
 
static bool threadSynced = false
 
static pthread_mutex_t parentalMutex = PTHREAD_MUTEX_INITIALIZER
 
static pthread_cond_t parentalCond = PTHREAD_COND_INITIALIZER
 
static pthread_t creatingThread = 0
 
static managedMemorydefaultManager
 
static const memoryID invalid = 0
 

Protected Types

enum  swapErrorCode { ERR_SUCCESS, ERR_SWAPFULL, ERR_MORETHANTOTALRAM, ERR_NOTENOUGHCANDIDATES }
 Error codes for swapOut requests. More...
 

Protected Member Functions

managedMemoryChunkmmalloc (global_bytesize sizereq)
 allocates and registers a new raw memory chunk of size sizereq to be filled in by managedPtr More...
 
bool mrealloc (memoryID id, global_bytesize sizereq)
 this function is a stub. In the future it should be capable of resizing an existing allocation More...
 
void mfree (rambrain::memoryID id, bool inCleanup=false)
 this function unregisters and deallocates a chunk More...
 
managedMemoryChunkresolveMemChunk (const memoryID &id)
 returns a reference to the memoryChunk indexed by id id More...
 
virtual swapErrorCode swapOut (global_bytesize min_size)=0
 swaps out at least min_size bytes More...
 
virtual bool swapIn (memoryID id)
 Convenience function for swapIn ( managedMemoryChunk &chunk ) More...
 
virtual bool swapIn (managedMemoryChunk &chunk)=0
 Tries to swap in chunk chunk. More...
 
virtual bool touch (managedMemoryChunk &chunk)=0
 marks chunk as recently active as a hint for scheduling More...
 
virtual void untouch (managedMemoryChunk &chunk)=0
 marks chunk as recently not needed any more More...
 
virtual void schedulerRegister (managedMemoryChunk &chunk)=0
 gives scheduler code the opportunity to register its own datastructures associated with a chunk More...
 
virtual void schedulerDelete (managedMemoryChunk &chunk)=0
 signals deletion of chunk to scheduler code More...
 
bool ensureEnoughSpace (global_bytesize sizereq, managedMemoryChunk *orIsSwappedin=NULL)
 This function ensures that there is sizereq space left in ram. More...
 
bool waitForSwapin (managedMemoryChunk &chunk, bool keepSwapLock=false)
 Waits until a certain chunk is present. More...
 
bool waitForSwapout (managedMemoryChunk &chunk, bool keepSwapLock=false)
 Waits until a certain chunk is swapped out. More...
 
void claimUsageof (global_bytesize bytes, bool rambytes, bool used)
 account for memory usage change More...
 
void claimTobefreed (global_bytesize bytes, bool tobefreed)
 account for future availability of bytes More...
 
void waitForAIO ()
 wait for some asynchronous action to occur More...
 

Static Protected Member Functions

static bool Throw (memoryException e)
 Custom throw function, as we need to prevent throwing exceptions in construtors. More...
 

Protected Attributes

managedSwapswap = 0
 
global_bytesize memory_max
 
global_bytesize memory_used = 0
 
global_bytesize memory_swapped = 0
 
global_bytesize memory_tobefreed = 0
 
bool outOfSwapIsFatal = true
 
std::map< memoryID, managedMemoryChunk * > memChunks
 
memoryAtime atime = 0
 
memoryID memID_pace = 1
 
managedMemorypreviousManager
 
global_bytesize n_swap_out = 0
 
global_bytesize n_swap_in = 0
 
global_bytesize swap_out_scheduled_bytes = 0
 
global_bytesize swap_in_scheduled_bytes = 0
 
global_bytesize swap_out_bytes = 0
 
global_bytesize swap_in_bytes = 0
 
global_bytesize swap_out_bytes_last = 0
 
global_bytesize swap_in_bytes_last = 0
 
global_bytesize swap_hits = 0
 
global_bytesize swap_misses = 0
 
size_t memoryAlignment = 1
 

Static Protected Attributes

static pthread_mutex_t stateChangeMutex = PTHREAD_MUTEX_INITIALIZER
 
static pthread_cond_t swappingCond = PTHREAD_COND_INITIALIZER
 
static FILE * logFile = fopen ( "rambrain-swapstats.log", "w" )
 
static bool firstLog = true
 

Friends

template<class T , int dim>
class managedPtr
 
class managedSwap
 
class managedFileSwap
 
class managedDummySwap
 
class ::managedFileSwap_Unit_ManualSwapping_Test
 
class ::managedFileSwap_Unit_ManualMultiSwapping_Test
 
class ::managedFileSwap_Unit_ManualSwappingDelete_Test
 
class ::cyclicManagedMemory_Integration_ArrayAccess_Test
 
class ::managedFileSwap_Unit_CheckSwapStats_Test
 
managedSwapconfigTestGetSwap (managedMemory *man)
 

Detailed Description

Backend class to handle raw memory and interaction/storage with managedSwap.

Note
Different strategies which elements to swap out / in can be implemented by inheriting this class
End users do not need to instantiate/use this class directly. This will be done by config manager

This class's implementation is written to standardize most of interactions between swap and managedMemory derived classes. Implementation supports asynchronous actions. While there may be more parallelism possible we currently support only one mutex ( stateChangeMutex ) to make this thread-safe to keep things simple at the moment.

Warning
When writing new strategies, study the locking/unlocking of stateChangeMutex closely to prevent deadlocks. ManagedFileSwap may serve as an example.
Only the most recent allocated memoryManager will be used by adhereTo / managedPtr classes

Definition at line 68 of file managedMemory.h.

Member Enumeration Documentation

Error codes for swapOut requests.

Enumerator
ERR_SUCCESS 

Swapping action was successful.

ERR_SWAPFULL 

Swap space is full.

ERR_MORETHANTOTALRAM 

The element/size requested does not fit in RAM as a whole.

ERR_NOTENOUGHCANDIDATES 

We lack reasonable candidates for swapout (too much elements in use?)

Definition at line 171 of file managedMemory.h.

Constructor & Destructor Documentation

rambrain::managedMemory::managedMemory ( managedSwap swap,
global_bytesize  size = gig 
)

Standard constructor.

Parameters
swapThe swap that this manager should use.
sizeThe net size of memory that is allowed in allocation. Be aware of leaving enough space for overhead.

Definition at line 64 of file managedMemory.cpp.

rambrain::managedMemory::~managedMemory ( )
virtual

Definition at line 90 of file managedMemory.cpp.

Member Function Documentation

void rambrain::managedMemory::claimTobefreed ( rambrain::global_bytesize  bytes,
bool  tobefreed 
)
protected

account for future availability of bytes

Parameters
bytesnumber of bytes under consideration
tobefreedsum of bytes will be increased if true, else decreased.
Note
this function must be called having stateChangeMutex acquired. This tells memoryManager that asynchronous actions pending will free the number of bytes given by parameter or that these bytes have now been freed

Definition at line 814 of file managedMemory.cpp.

void rambrain::managedMemory::claimUsageof ( rambrain::global_bytesize  bytes,
bool  rambytes,
bool  used 
)
protected

account for memory usage change

Parameters
bytesnumber of bytes under consideration
rambytesset this to true if you want to signal different usage for bytes residing in rambytes
usedsum of bytes will be increased if true, else decreased.
Note
this function must be called having stateChangeMutex acquired.

Definition at line 804 of file managedMemory.cpp.

void rambrain::managedMemory::closeSwap ( )

powers down the swap class, ergo a cleanup

Warning
Can not use any rambrain pointers after this action until a new swap is installed

Definition at line 118 of file managedMemory.cpp.

bool rambrain::managedMemory::ensureEnoughSpace ( global_bytesize  sizereq,
managedMemoryChunk orIsSwappedin = NULL 
)
protected

This function ensures that there is sizereq space left in ram.

Parameters
orisSwappedinif not null, this chunk will be checked for ram presence
Returns
If orisSwappedin is set, return value tells whether the chunk orisSwappedin is pointing to has been or is about to be swapped in. Otherwise false

Definition at line 185 of file managedMemory.cpp.

global_bytesize rambrain::managedMemory::getFreeSwapMemory ( ) const

return current swap free capacity

Definition at line 136 of file managedMemory.cpp.

double rambrain::managedMemory::getHitsOverMisses ( )

returns current hits over misses rate for accessing elements.

Definition at line 708 of file managedMemory.cpp.

global_bytesize rambrain::managedMemory::getMemoryLimit ( ) const
inline

returns current memory limit

Definition at line 93 of file managedMemory.h.

unsigned int rambrain::managedMemory::getNumberOfChildren ( const memoryID id)

conveniently returns number of children of the memoryChunk with id id

Definition at line 527 of file managedMemory.cpp.

global_bytesize rambrain::managedMemory::getSwappedMemory ( ) const

returns current swap usage

Definition at line 131 of file managedMemory.cpp.

global_bytesize rambrain::managedMemory::getTotalSwapMemory ( ) const

return current swap capacity

Definition at line 141 of file managedMemory.cpp.

double rambrain::managedMemory::getTotalSwappedInBytes ( )
inline

simple Getter

Definition at line 318 of file managedMemory.h.

double rambrain::managedMemory::getTotalSwappedOutBytes ( )
inline

simple Getter

Definition at line 314 of file managedMemory.h.

global_bytesize rambrain::managedMemory::getUsedMemory ( ) const

returns current ram usage

Definition at line 126 of file managedMemory.cpp.

void rambrain::managedMemory::linearMfree ( )

linearly deletes all objects in memory

Note
This function does not preserve correct deallocation order in class hierarchies, as such, it is not a valid garbage collector.

Definition at line 618 of file managedMemory.cpp.

void rambrain::managedMemory::mfree ( rambrain::memoryID  id,
bool  inCleanup = false 
)
protected

this function unregisters and deallocates a chunk

Definition at line 460 of file managedMemory.cpp.

managedMemoryChunk * rambrain::managedMemory::mmalloc ( global_bytesize  sizereq)
protected

allocates and registers a new raw memory chunk of size sizereq to be filled in by managedPtr

Definition at line 235 of file managedMemory.cpp.

bool rambrain::managedMemory::mrealloc ( memoryID  id,
global_bytesize  sizereq 
)
protected

this function is a stub. In the future it should be capable of resizing an existing allocation

Definition at line 379 of file managedMemory.cpp.

bool rambrain::managedMemory::prepareUse ( rambrain::managedMemoryChunk chunk,
bool  acquireLock = true 
)

Triggers swapin of chunk.

Definition at line 297 of file managedMemory.cpp.

void rambrain::managedMemory::printSwapstats ( ) const

print statistic about the number, size and efficiency of swapping actions

Definition at line 639 of file managedMemory.cpp.

void rambrain::managedMemory::printTree ( managedMemoryChunk current = NULL,
unsigned int  nspaces = 0 
)

prints the tree of managed objects for further inspection

Definition at line 546 of file managedMemory.cpp.

void rambrain::managedMemory::recursiveMfree ( memoryID  id)

recursively deletes the objects in memory, first children, then parents.

Note
This function does not preserve correct deallocation order in class hierarchies, as such, it is not a valid garbage collector.

Definition at line 597 of file managedMemory.cpp.

void rambrain::managedMemory::resetSwapstats ( )

reset statistic about the number, size and efficiency of swapping actions

Definition at line 651 of file managedMemory.cpp.

managedMemoryChunk & rambrain::managedMemory::resolveMemChunk ( const memoryID id)
protected

returns a reference to the memoryChunk indexed by id id

Definition at line 633 of file managedMemory.cpp.

virtual void rambrain::managedMemory::schedulerDelete ( managedMemoryChunk chunk)
protectedpure virtual

signals deletion of chunk to scheduler code

Implemented in rambrain::cyclicManagedMemory, and rambrain::dummyManagedMemory.

virtual void rambrain::managedMemory::schedulerRegister ( managedMemoryChunk chunk)
protectedpure virtual

gives scheduler code the opportunity to register its own datastructures associated with a chunk

Implemented in rambrain::cyclicManagedMemory, and rambrain::dummyManagedMemory.

bool rambrain::managedMemory::setMemoryLimit ( global_bytesize  size)

dynamically adjusts allowed ram usage

Parameters
sizedesired allowed ram size
Returns
returns whether the new restrictions could be fulfilled under current load If necessary, this function will trigger writeout of objects until the new limit is reached.

Definition at line 146 of file managedMemory.cpp.

bool rambrain::managedMemory::setOutOfSwapIsFatal ( bool  fatal = true)

set policy what to do when out of memory in both ram and swap

Returns
old policy

Definition at line 177 of file managedMemory.cpp.

bool rambrain::managedMemory::setUse ( memoryID  id)
bool rambrain::managedMemory::setUse ( managedMemoryChunk chunk,
bool  writeAccess = false 
)

Marks chunk as used and prevents swapout.

Returns
success
Parameters
chunkthe chunk that will be used
writeAccessset this to false if the chunk will not be written to

Definition at line 333 of file managedMemory.cpp.

void rambrain::managedMemory::signalSwappingCond ( )
static

signals that a swapping action has completed and memory limits have changed

Note
this function is used e.g. by managedSwap to give other threads waiting the possibility to check whether the condition they're waiting for is met now.

Definition at line 742 of file managedMemory.cpp.

void rambrain::managedMemory::sigswapstats ( int  sig)
static

static binding that will print out some stats. Compile with cmake -DSWAPSTATS=on and send process SIGUSR1 to call this function

Definition at line 658 of file managedMemory.cpp.

bool rambrain::managedMemory::swapIn ( memoryID  id)
protectedvirtual

Convenience function for swapIn ( managedMemoryChunk &chunk )

See also
swapIn(managedMemoryChunk &chunk)

Definition at line 291 of file managedMemory.cpp.

virtual bool rambrain::managedMemory::swapIn ( managedMemoryChunk chunk)
protectedpure virtual

Tries to swap in chunk chunk.

Returns
success
Parameters
chunkthe chunk subject to be swapped in Successful return does not mean that the chunk is available at an instant. It may be necessary for asynchronous swapIn to complete beforehands.
Note
this function must be called having stateChangeMutex acquired.

Implemented in rambrain::cyclicManagedMemory, and rambrain::dummyManagedMemory.

virtual swapErrorCode rambrain::managedMemory::swapOut ( global_bytesize  min_size)
protectedpure virtual

swaps out at least min_size bytes

Returns
returns whether the swap out was successful or a reason why it was note
Parameters
min_sizeminimum size of swapped out elements Sucessful return does not mean that the bytes are available at an instant. It may be necessary for swapOut to complete beforehands.
Note
this function must be called having stateChangeMutex acquired.

Implemented in rambrain::cyclicManagedMemory, and rambrain::dummyManagedMemory.

bool rambrain::managedMemory::Throw ( memoryException  e)
staticprotected

Custom throw function, as we need to prevent throwing exceptions in construtors.

Definition at line 443 of file managedMemory.cpp.

virtual bool rambrain::managedMemory::touch ( managedMemoryChunk chunk)
protectedpure virtual

marks chunk as recently active as a hint for scheduling

Implemented in rambrain::cyclicManagedMemory, and rambrain::dummyManagedMemory.

bool rambrain::managedMemory::unsetUse ( memoryID  id)

Convenience interface for unsetUse ( managedMemoryChunk &chunk, bool writeAccess )

See also
unsetUse(managedMemoryChunk &chunk,bool writeAccess);

Definition at line 404 of file managedMemory.cpp.

bool rambrain::managedMemory::unsetUse ( managedMemoryChunk chunk,
unsigned int  no_unsets = 1 
)

Marks chunk as unused again.

Returns
success
Parameters
chunkthe chunk that will not be needed in near future
no_unsetsif you set use to the chunk n times, you may set this to n instead of calling n times

Definition at line 417 of file managedMemory.cpp.

virtual void rambrain::managedMemory::untouch ( managedMemoryChunk chunk)
protectedpure virtual

marks chunk as recently not needed any more

Implemented in rambrain::cyclicManagedMemory, and rambrain::dummyManagedMemory.

void rambrain::managedMemory::versionInfo ( )
static

prints out a GIT version info and a diff on this version at compile time

Definition at line 716 of file managedMemory.cpp.

void rambrain::managedMemory::waitForAIO ( )
protected

wait for some asynchronous action to occur

Note
this function must be called having stateChangeMutex acquired.

Definition at line 747 of file managedMemory.cpp.

bool rambrain::managedMemory::waitForSwapin ( managedMemoryChunk chunk,
bool  keepSwapLock = false 
)
protected

Waits until a certain chunk is present.

Returns
success
Warning
ensure that chunk is to be swapped in or may be present.
Note
this function must be called having stateChangeMutex acquired.

Definition at line 757 of file managedMemory.cpp.

bool rambrain::managedMemory::waitForSwapout ( managedMemoryChunk chunk,
bool  keepSwapLock = false 
)
protected

Waits until a certain chunk is swapped out.

Returns
success
Warning
ensure that chunk is to be swapped out in or may have already been swapped.
Note
this function must be called having stateChangeMutex acquired.

Definition at line 779 of file managedMemory.cpp.

Friends And Related Function Documentation

friend class ::cyclicManagedMemory_Integration_ArrayAccess_Test
friend

Definition at line 247 of file managedMemory.h.

friend class ::managedFileSwap_Unit_CheckSwapStats_Test
friend

Definition at line 248 of file managedMemory.h.

friend class ::managedFileSwap_Unit_ManualMultiSwapping_Test
friend

Definition at line 245 of file managedMemory.h.

friend class ::managedFileSwap_Unit_ManualSwapping_Test
friend

Definition at line 244 of file managedMemory.h.

friend class ::managedFileSwap_Unit_ManualSwappingDelete_Test
friend

Definition at line 246 of file managedMemory.h.

managedSwap* configTestGetSwap ( managedMemory man)
friend

Definition at line 31 of file configTest.cpp.

friend class managedDummySwap
friend

Definition at line 241 of file managedMemory.h.

friend class managedFileSwap
friend

Definition at line 240 of file managedMemory.h.

template<class T , int dim>
friend class managedPtr
friend

Definition at line 238 of file managedMemory.h.

friend class managedSwap
friend

Definition at line 239 of file managedMemory.h.

Member Data Documentation

memoryAtime rambrain::managedMemory::atime = 0
protected

Definition at line 224 of file managedMemory.h.

pthread_t rambrain::managedMemory::creatingThread = 0
static

Definition at line 145 of file managedMemory.h.

managedMemory * rambrain::managedMemory::defaultManager
static

Definition at line 152 of file managedMemory.h.

bool rambrain::managedMemory::firstLog = true
staticprotected

Definition at line 301 of file managedMemory.h.

memoryID const rambrain::managedMemory::invalid = 0
static

Definition at line 153 of file managedMemory.h.

FILE * rambrain::managedMemory::logFile = fopen ( "rambrain-swapstats.log", "w" )
staticprotected
Warning
This will induce a serious issue in combination with MPI and a shared disk. How to handle that case?

Definition at line 300 of file managedMemory.h.

std::map<memoryID, managedMemoryChunk *> rambrain::managedMemory::memChunks
protected

Definition at line 222 of file managedMemory.h.

memoryID rambrain::managedMemory::memID_pace = 1
protected

Definition at line 225 of file managedMemory.h.

global_bytesize rambrain::managedMemory::memory_max
protected

Definition at line 216 of file managedMemory.h.

global_bytesize rambrain::managedMemory::memory_swapped = 0
protected

Definition at line 218 of file managedMemory.h.

global_bytesize rambrain::managedMemory::memory_tobefreed = 0
protected

Definition at line 219 of file managedMemory.h.

global_bytesize rambrain::managedMemory::memory_used = 0
protected

Definition at line 217 of file managedMemory.h.

size_t rambrain::managedMemory::memoryAlignment = 1
protected

Definition at line 297 of file managedMemory.h.

global_bytesize rambrain::managedMemory::n_swap_in = 0
protected

Definition at line 255 of file managedMemory.h.

global_bytesize rambrain::managedMemory::n_swap_out = 0
protected

Definition at line 254 of file managedMemory.h.

bool rambrain::managedMemory::outOfSwapIsFatal = true
protected

Definition at line 220 of file managedMemory.h.

memoryID rambrain::managedMemory::parent = managedMemory::root
static

Definition at line 140 of file managedMemory.h.

pthread_cond_t rambrain::managedMemory::parentalCond = PTHREAD_COND_INITIALIZER
static

Definition at line 144 of file managedMemory.h.

pthread_mutex_t rambrain::managedMemory::parentalMutex = PTHREAD_MUTEX_INITIALIZER
static

Definition at line 143 of file managedMemory.h.

managedMemory* rambrain::managedMemory::previousManager
protected

Definition at line 228 of file managedMemory.h.

memoryID const rambrain::managedMemory::root = 1
static

Definition at line 139 of file managedMemory.h.

pthread_mutex_t rambrain::managedMemory::stateChangeMutex = PTHREAD_MUTEX_INITIALIZER
staticprotected

Definition at line 232 of file managedMemory.h.

managedSwap* rambrain::managedMemory::swap = 0
protected

Definition at line 214 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_hits = 0
protected

Definition at line 266 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_in_bytes = 0
protected

Definition at line 261 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_in_bytes_last = 0
protected

Definition at line 264 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_in_scheduled_bytes = 0
protected

Definition at line 259 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_misses = 0
protected

Definition at line 267 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_out_bytes = 0
protected

Definition at line 260 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_out_bytes_last = 0
protected

Definition at line 263 of file managedMemory.h.

global_bytesize rambrain::managedMemory::swap_out_scheduled_bytes = 0
protected

Definition at line 258 of file managedMemory.h.

pthread_cond_t rambrain::managedMemory::swappingCond = PTHREAD_COND_INITIALIZER
staticprotected

Definition at line 234 of file managedMemory.h.

bool rambrain::managedMemory::threadSynced = false
static

Definition at line 142 of file managedMemory.h.


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