tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
stmskip.cc File Reference
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "common/fraser/portable_defns.h"
#include "common/fraser/gc.h"
#include "common/fraser/stm.h"
#include "stmskip.h"
Include dependency graph for stmskip.cc:

Classes

struct  node_st
 

Macros

#define __STMSKIP_IMPLEMENTATION__
 
#define MEMORY   (shared.memory)
 

Typedefs

typedef struct node_st node_t
 
typedef stm_blk set_t
 

Enumerations

enum  SetOpType {
  FIND = 0, INSERT, DELETE, FIND = 0,
  INSERT, DELETE
}
 

Functions

static int get_level (ptst_t *ptst)
 
static node_tsearch_predecessors (ptst_t *ptst, stm_tx *tx, set_t *l, setkey_t k, stm_blk **pa, stm_blk **na)
 
set_tstmskip_alloc (void)
 
setval_t stmskip_update (ptst_t *ptst, stm_tx *tx, set_t *l, setkey_t k, setval_t v)
 
setval_t stmskip_remove (ptst_t *ptst, stm_tx *tx, set_t *l, setkey_t k)
 
setval_t stmskip_lookup (ptst_t *ptst, stm_tx *tx, set_t *l, setkey_t k)
 
bool __attribute__ ((optimize(0))) stmskip_execute_ops(void *s
 
 new_stm_tx (tx, ptst, MEMORY)
 
 for (int i=0;i< op_size;++i)
 
 if (commit_stm_tx(ptst, tx))
 
 fr_critical_exit (ptst)
 
void init_stmskip_subsystem (void)
 
void destory_stmskip_subsystem (void)
 

Variables

static uint32_t g_count_commit = 0
 
static uint32_t g_count_abort = 0
 
static uint32_t g_count_real_abort = 0
 
struct {
   stm *   memory
 
shared
 
bool set_op ops []
 
bool set_op int op_size set_tl = (set_t*)s
 
bool ret = false
 
ptst_tptst = fr_critical_enter()
 
stm_txtx
 
 else
 

Macro Definition Documentation

#define __STMSKIP_IMPLEMENTATION__
#define MEMORY   (shared.memory)

Typedef Documentation

typedef struct node_st node_t
typedef stm_blk set_t

Enumeration Type Documentation

enum SetOpType
Enumerator
FIND 
INSERT 
DELETE 
FIND 
INSERT 
DELETE 

Function Documentation

bool __attribute__ ( (optimize(0))  )
void destory_stmskip_subsystem ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

for ( )

Here is the call graph for this function:

Here is the caller graph for this function:

fr_critical_exit ( ptst  )

Here is the caller graph for this function:

static int get_level ( ptst_t ptst)
static

Here is the caller graph for this function:

if ( commit_stm_tx(ptst, tx )

Here is the caller graph for this function:

void init_stmskip_subsystem ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

new_stm_tx ( tx  ,
ptst  ,
MEMORY   
)
static node_t* search_predecessors ( ptst_t ptst,
stm_tx tx,
set_t l,
setkey_t  k,
stm_blk **  pa,
stm_blk **  na 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

set_t* stmskip_alloc ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

setval_t stmskip_lookup ( ptst_t ptst,
stm_tx tx,
set_t l,
setkey_t  k 
)

Here is the call graph for this function:

Here is the caller graph for this function:

setval_t stmskip_remove ( ptst_t ptst,
stm_tx tx,
set_t l,
setkey_t  k 
)

Here is the call graph for this function:

Here is the caller graph for this function:

setval_t stmskip_update ( ptst_t ptst,
stm_tx tx,
set_t l,
setkey_t  k,
setval_t  v 
)

Here is the call graph for this function:

Here is the caller graph for this function:

Variable Documentation

else
Initial value:
{
static uint32_t g_count_abort
Definition: stmskip.cc:39
#define __sync_fetch_and_add(p, a)
Definition: icc-sync.hpp:57
uint32_t g_count_abort = 0
static
uint32_t g_count_commit = 0
static
uint32_t g_count_real_abort = 0
static
bool set_op int op_size set_t* l = (set_t*)s
bool set_op ops[]
return ret = false
struct { ... } shared
stm_tx* tx