tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
algs.hpp File Reference
#include <stm/config.h>
#include <cstdio>
#include "stm/metadata.hpp"
#include "stm/txthread.hpp"
#include "../profiling.hpp"
Include dependency graph for algs.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  stm::alg_t
 

Namespaces

 stm
 

Typedefs

typedef TM_FASTCALL void *(* stm::ReadBarrier )(STM_READ_SIG(,,))
 
typedef TM_FASTCALL void(* stm::WriteBarrier )(STM_WRITE_SIG(,,,))
 
typedef TM_FASTCALL void(* stm::CommitBarrier )(STM_COMMIT_SIG(,))
 

Enumerations

enum  stm::ALGS {
  stm::CGL = 0, stm::Ticket, stm::TML, stm::RingSW,
  stm::OrecALA, stm::OrecELA, stm::TMLLazy, stm::NOrecPrio,
  stm::OrecFair, stm::CToken, stm::CTokenTurbo, stm::Pipeline,
  stm::BitLazy, stm::LLT, stm::TLI, stm::ByteEager,
  stm::MCS, stm::Serial, stm::BitEager, stm::ByteLazy,
  stm::ByEAR, stm::OrecEagerRedo, stm::ByteEagerRedo, stm::BitEagerRedo,
  stm::RingALA, stm::Nano, stm::Swiss, stm::ByEAU,
  stm::ByEAUFCM, stm::ByEAUHA, stm::ByEAUHour, stm::OrEAU,
  stm::OrEAUFCM, stm::OrEAUHA, stm::OrEAUHour, stm::OrecEager,
  stm::OrecEagerHour, stm::OrecEagerBackoff, stm::OrecEagerHB, stm::OrecLazy,
  stm::OrecLazyHour, stm::OrecLazyBackoff, stm::OrecLazyHB, stm::NOrec,
  stm::NOrecHour, stm::NOrecBackoff, stm::NOrecHB, stm::ProfileTM,
  stm::ProfileAppAvg, stm::ProfileAppMax, stm::ProfileAppAll, stm::ALG_MAX
}
 

Functions

filter_t ring_wf[RING_ELEMENTS] stm::TM_ALIGN (16)
 
TM_INLINE orec_t * stm::get_orec (void *addr)
 
TM_INLINE orec_t * stm::get_nanorec (void *addr)
 
TM_INLINE rrec_t * stm::get_rrec (void *addr)
 
TM_INLINE bytelock_t * stm::get_bytelock (void *addr)
 
TM_INLINE bitlock_t * stm::get_bitlock (void *addr)
 
template<int I>
void stm::initTM ()
 
int stm::stm_name_map (const char *phasename)
 
TM_INLINE void stm::exp_backoff (TxThread *tx)
 
TM_FASTCALL bool stm::begin_CGL (TxThread *)
 
void stm::OnReadWriteCommit (TxThread *tx, ReadBarrier read_ro, WriteBarrier write_ro, CommitBarrier commit_ro)
 
void stm::OnReadWriteCommit (TxThread *tx)
 
void stm::OnReadOnlyCommit (TxThread *tx)
 
void stm::OnCGLCommit (TxThread *tx)
 
void stm::OnReadOnlyCGLCommit (TxThread *tx)
 
void stm::OnFirstWrite (TxThread *tx, ReadBarrier read_rw, WriteBarrier write_rw, CommitBarrier commit_rw)
 
void stm::PreRollback (TxThread *tx)
 
scope_t * stm::PostRollback (TxThread *tx, ReadBarrier read_ro, WriteBarrier write_ro, CommitBarrier commit_ro)
 
scope_t * stm::PostRollback (TxThread *tx)
 
scope_t * stm::PostRollbackNoTrigger (TxThread *tx, stm::ReadBarrier r, stm::WriteBarrier w, stm::CommitBarrier c)
 
scope_t * stm::PostRollbackNoTrigger (TxThread *tx)
 
void stm::GoTurbo (TxThread *tx, ReadBarrier r, WriteBarrier w, CommitBarrier c)
 
bool stm::CheckTurboMode (TxThread *tx, ReadBarrier read_turbo)
 

Variables

static const uint32_t stm::NUM_STRIPES = 1048576
 
static const uint32_t stm::RING_ELEMENTS = 1024
 
static const uint32_t stm::KARMA_FACTOR = 16
 
static const uint32_t stm::BACKOFF_MIN = 4
 
static const uint32_t stm::BACKOFF_MAX = 16
 
static const uint32_t stm::RREC_COUNT = 1048576
 
static const uint32_t stm::WB_CHUNK_SIZE = 16
 
static const uint32_t stm::EPOCH_MAX = INT_MAX
 
static const uint32_t stm::ACTIVE = 0
 
static const uint32_t stm::ABORTED = 1
 
static const uint32_t stm::SWISS_PHASE2 = 10