Atlas Runtime
Atlas::LogMgr Class Reference

#include <log_mgr.hpp>

Public Member Functions

void setRegionId (region_id_t id)
 
region_id_t getRegionId () const
 
void acquireLogReadyLock ()
 
void releaseLogReadyLock ()
 
void waitLogReady ()
 
void signalLogReady ()
 
bool cmpXchngWeakLogPointer (LogStructure *expected, LogStructure *desired, std::memory_order success, std::memory_order failure)
 
bool cmpXchngWeakRecoveryLogPointer (LogStructure *expected, LogStructure *desired, std::memory_order success, std::memory_order failure)
 
void logNonTemporal (LogEntry *le, void *addr, size_t sz, LogType le_type)
 
void logAcquire (void *)
 
void logRelease (void *)
 Entry point into log manager for a lock release. More...
 
void logRdLock (void *)
 
void logWrLock (void *)
 
void logRWUnlock (void *)
 
void logBeginDurable ()
 
void logEndDurable ()
 
void logStore (void *addr, size_t sz)
 
void logMemset (void *addr, size_t sz)
 
void logMemcpy (void *dst, size_t sz)
 
void logMemmove (void *dst, size_t sz)
 
void logStrcpy (void *dst, size_t sz)
 
void logStrcat (void *dst, size_t sz)
 
void logAlloc (void *addr)
 
void logFree (void *addr)
 
LogStructurecreateLogStructure (LogEntry *le)
 Create a thread specific log header. More...
 
void psync (void *start_addr, size_t sz)
 
void psyncWithAcquireBarrier (void *start_addr, size_t sz)
 
void asyncLogFlush (void *p)
 
void syncLogFlush ()
 
void asyncDataFlush (void *p)
 
void asyncMemOpDataFlush (void *dst, size_t sz)
 
void syncDataFlush ()
 
void flushAtEndOfFase ()
 
void collectCacheLines (SetOfInts *cl_set, void *addr, size_t sz)
 
void flushCacheLines (const SetOfInts &cl_set)
 
void flushCacheLinesUnconstrained (const SetOfInts &cl_set)
 
void flushLogUncond (void *)
 
void flushLogPointer ()
 
void flushRecoveryLogPointer ()
 
bool areUserThreadsDone () const
 
LogStructuregetRecoveryLogPointer (std::memory_order mem_order) const
 
void setRecoveryLogPointer (LogStructure *log_ptr, std::memory_order mem_order)
 
LogStructuregetLogPointer (std::memory_order mem_order) const
 
void deleteOwnerInfo (LogEntry *le)
 
void deleteEntry (LogEntry *addr)
 
void acquireStatsLock ()
 
void releaseStatsLock ()
 
void printStats () const
 

Static Public Member Functions

static LogMgrcreateInstance ()
 
static LogMgrcreateRecoveryInstance ()
 
static void deleteInstance ()
 
static LogMgrgetInstance ()
 
static bool hasInstance ()
 

Member Function Documentation

void Atlas::LogMgr::acquireLogReadyLock ( )
inline
void Atlas::LogMgr::acquireStatsLock ( )
inline
bool Atlas::LogMgr::areUserThreadsDone ( ) const
inline
void Atlas::LogMgr::asyncDataFlush ( void *  p)
void Atlas::LogMgr::asyncLogFlush ( void *  p)
void Atlas::LogMgr::asyncMemOpDataFlush ( void *  dst,
size_t  sz 
)
bool Atlas::LogMgr::cmpXchngWeakLogPointer ( LogStructure expected,
LogStructure desired,
std::memory_order  success,
std::memory_order  failure 
)
inline
bool Atlas::LogMgr::cmpXchngWeakRecoveryLogPointer ( LogStructure expected,
LogStructure desired,
std::memory_order  success,
std::memory_order  failure 
)
inline
void Atlas::LogMgr::collectCacheLines ( SetOfInts cl_set,
void *  addr,
size_t  sz 
)
static LogMgr& Atlas::LogMgr::createInstance ( )
inlinestatic
LogStructure * Atlas::LogMgr::createLogStructure ( LogEntry le)

Create a thread specific log header.

Parameters
leFirst log entry for this thread
Return values
Pointerto the log header created

The following is called by the helper thread alone (today).

static LogMgr& Atlas::LogMgr::createRecoveryInstance ( )
inlinestatic
void Atlas::LogMgr::deleteEntry ( LogEntry addr)
inline
static void Atlas::LogMgr::deleteInstance ( )
inlinestatic
void Atlas::LogMgr::deleteOwnerInfo ( LogEntry le)
void Atlas::LogMgr::flushAtEndOfFase ( )
void Atlas::LogMgr::flushCacheLines ( const SetOfInts cl_set)
void Atlas::LogMgr::flushCacheLinesUnconstrained ( const SetOfInts cl_set)
void Atlas::LogMgr::flushLogPointer ( )
inline
void Atlas::LogMgr::flushLogUncond ( void *  p)
inline
void Atlas::LogMgr::flushRecoveryLogPointer ( )
inline
static LogMgr& Atlas::LogMgr::getInstance ( )
inlinestatic
LogStructure* Atlas::LogMgr::getLogPointer ( std::memory_order  mem_order) const
inline
LogStructure* Atlas::LogMgr::getRecoveryLogPointer ( std::memory_order  mem_order) const
inline
region_id_t Atlas::LogMgr::getRegionId ( ) const
inline
static bool Atlas::LogMgr::hasInstance ( )
inlinestatic
void Atlas::LogMgr::logAcquire ( void *  lock_address)
inline
void Atlas::LogMgr::logAlloc ( void *  addr)
void Atlas::LogMgr::logBeginDurable ( )
inline
void Atlas::LogMgr::logEndDurable ( )
void Atlas::LogMgr::logFree ( void *  addr)
void Atlas::LogMgr::logMemcpy ( void *  dst,
size_t  sz 
)
inline
void Atlas::LogMgr::logMemmove ( void *  dst,
size_t  sz 
)
inline
void Atlas::LogMgr::logMemset ( void *  addr,
size_t  sz 
)
inline
void Atlas::LogMgr::logNonTemporal ( LogEntry le,
void *  addr,
size_t  sz,
LogType  le_type 
)
void Atlas::LogMgr::logRdLock ( void *  lock_address)
inline
void Atlas::LogMgr::logRelease ( void *  lock_address)

Entry point into log manager for a lock release.

Parameters
lock_addressAddress of the lock object to be released
void Atlas::LogMgr::logRWUnlock ( void *  lock_address)
void Atlas::LogMgr::logStore ( void *  addr,
size_t  sz 
)
inline
void Atlas::LogMgr::logStrcat ( void *  dst,
size_t  sz 
)
inline
void Atlas::LogMgr::logStrcpy ( void *  dst,
size_t  sz 
)
inline
void Atlas::LogMgr::logWrLock ( void *  lock_address)
inline
void Atlas::LogMgr::printStats ( ) const
inline
void Atlas::LogMgr::psync ( void *  start_addr,
size_t  sz 
)
void Atlas::LogMgr::psyncWithAcquireBarrier ( void *  start_addr,
size_t  sz 
)
void Atlas::LogMgr::releaseLogReadyLock ( )
inline
void Atlas::LogMgr::releaseStatsLock ( )
inline
void Atlas::LogMgr::setRecoveryLogPointer ( LogStructure log_ptr,
std::memory_order  mem_order 
)
inline
void Atlas::LogMgr::setRegionId ( region_id_t  id)
inline
void Atlas::LogMgr::signalLogReady ( )
inline
void Atlas::LogMgr::syncDataFlush ( )
void Atlas::LogMgr::syncLogFlush ( )
void Atlas::LogMgr::waitLogReady ( )
inline

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