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

Classes

struct  node_st
 
struct  fr_set_st
 

Macros

#define __SET_IMPLEMENTATION__
 
#define LEVEL_MASK   0x0ff
 
#define READY_FOR_FREE   0x100
 

Typedefs

typedef struct node_st node_t
 
typedef struct fr_set_st boost_skip
 
typedef VOLATILE node_tsh_node_pt
 

Functions

static int get_level (ptst_t *ptst)
 
static node_talloc_node (ptst_t *ptst)
 
static void free_node (ptst_t *ptst, sh_node_pt n)
 
static sh_node_pt strong_search_predecessors (boost_skip *l, setkey_t k, sh_node_pt *pa, sh_node_pt *na)
 
static sh_node_pt weak_search_predecessors (boost_skip *l, setkey_t k, sh_node_pt *pa, sh_node_pt *na)
 
static void mark_deleted (sh_node_pt x, int level)
 
static int check_for_full_delete (sh_node_pt x)
 
static void do_full_delete (ptst_t *ptst, boost_skip *l, sh_node_pt x, int level)
 
boost_skipboostskip_alloc (void)
 
setval_t set_update (boost_skip *l, setkey_t k, setval_t v, int overwrite)
 
setval_t set_remove (boost_skip *l, setkey_t k)
 
setval_t set_lookup (boost_skip *l, setkey_t k)
 
void init_boostskip_subsystem (void)
 
void destroy_boostskip_subsystem (void)
 
void boostskip_print (boost_skip *l)
 

Variables

static int gc_id [NUM_LEVELS]
 

Macro Definition Documentation

#define __SET_IMPLEMENTATION__
#define LEVEL_MASK   0x0ff
#define READY_FOR_FREE   0x100

Typedef Documentation

typedef struct fr_set_st boost_skip
typedef struct node_st node_t

Function Documentation

static node_t* alloc_node ( ptst_t ptst)
static

Here is the call graph for this function:

Here is the caller graph for this function:

boost_skip* boostskip_alloc ( void  )

Here is the caller graph for this function:

void boostskip_print ( boost_skip l)

Here is the call graph for this function:

Here is the caller graph for this function:

static int check_for_full_delete ( sh_node_pt  x)
static

Here is the caller graph for this function:

void destroy_boostskip_subsystem ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

static void do_full_delete ( ptst_t ptst,
boost_skip l,
sh_node_pt  x,
int  level 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static void free_node ( ptst_t ptst,
sh_node_pt  n 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static int get_level ( ptst_t ptst)
static

Here is the caller graph for this function:

void init_boostskip_subsystem ( void  )

Here is the call graph for this function:

Here is the caller graph for this function:

static void mark_deleted ( sh_node_pt  x,
int  level 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

setval_t set_lookup ( boost_skip l,
setkey_t  k 
)

Here is the call graph for this function:

Here is the caller graph for this function:

setval_t set_remove ( boost_skip l,
setkey_t  k 
)

Here is the call graph for this function:

Here is the caller graph for this function:

setval_t set_update ( boost_skip l,
setkey_t  k,
setval_t  v,
int  overwrite 
)

Here is the call graph for this function:

Here is the caller graph for this function:

static sh_node_pt strong_search_predecessors ( boost_skip l,
setkey_t  k,
sh_node_pt pa,
sh_node_pt na 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static sh_node_pt weak_search_predecessors ( boost_skip l,
setkey_t  k,
sh_node_pt pa,
sh_node_pt na 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

Variable Documentation

int gc_id[NUM_LEVELS]
static