Skip to content

File lock_free.c

FileList > base > lock_free.c

Go to the source code of this file

  • #include "config.h"
  • #include <assert.h>
  • #include "porting.h"
  • #include "lock_free.h"
  • #include "error_manager.h"
  • #include "error_code.h"
  • #include "memory_alloc.h"
  • #include "memory_wrapper.hpp"

Public Attributes

Type Name
LF_TRAN_SYSTEM catalog_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM dwb_slots_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM fpcache_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM free_sort_list_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM global_unique_stats_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM hfid_table_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM obj_lock_ent_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM obj_lock_res_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM sessions_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM spage_saving_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }
LF_TRAN_SYSTEM xcache_Ts = { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) }

Public Static Attributes

Type Name
INT64 lf_claims = 0
INT64 lf_claims_temp = 0
INT64 lf_clears = 0
INT64 lf_deletes = 0
INT64 lf_deletes_restart = 0
INT64 lf_hash_size = 0
INT64 lf_inserts = 0
INT64 lf_inserts_restart = 0
INT64 lf_list_deletes = 0
INT64 lf_list_deletes_fail_mark_next = 0
INT64 lf_list_deletes_fail_unlink = 0
INT64 lf_list_deletes_found = 0
INT64 lf_list_deletes_not_found = 0
INT64 lf_list_deletes_not_match = 0
INT64 lf_list_deletes_success_unlink = 0
INT64 lf_list_inserts = 0
INT64 lf_list_inserts_claim = 0
INT64 lf_list_inserts_fail_link = 0
INT64 lf_list_inserts_found = 0
INT64 lf_list_inserts_save_temp_1 = 0
INT64 lf_list_inserts_save_temp_2 = 0
INT64 lf_list_inserts_success_link = 0
INT64 lf_retires = 0
INT64 lf_temps = 0
INT64 lf_transports = 0
bool tran_systems_initialized = [**false**](broker__monitor_8c.md#function-timeout)

Public Functions

Type Name
int lf_callback_vpid_compare (void * vpid_1, void * vpid_2)
int lf_callback_vpid_copy (void * src, void * dest)
unsigned int lf_callback_vpid_hash (void * vpid, int htsize)
void lf_destroy_transaction_systems (void)
void * lf_freelist_claim (LF_TRAN_ENTRY * tran_entry, LF_FREELIST * freelist)
void lf_freelist_destroy (LF_FREELIST * freelist)
int lf_freelist_init (LF_FREELIST * freelist, int initial_blocks, int block_size, LF_ENTRY_DESCRIPTOR * edesc, LF_TRAN_SYSTEM * tran_system)
int lf_freelist_retire (LF_TRAN_ENTRY * tran_entry, LF_FREELIST * freelist, void * entry)
int lf_freelist_transport (LF_TRAN_ENTRY * tran_entry, LF_FREELIST * freelist)
void lf_hash_clear (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table)
void lf_hash_create_iterator (LF_HASH_TABLE_ITERATOR * iterator, LF_TRAN_ENTRY * tran_entry, LF_HASH_TABLE * table)
int lf_hash_delete (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, int * success)
int lf_hash_delete_already_locked (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, void * locked_entry, int * success)
void lf_hash_destroy (LF_HASH_TABLE * table)
int lf_hash_find (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, void ** entry)
int lf_hash_find_or_insert (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, void ** entry, int * inserted)
int lf_hash_init (LF_HASH_TABLE * table, LF_FREELIST * freelist, unsigned int hash_size, LF_ENTRY_DESCRIPTOR * edesc)
int lf_hash_insert (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, void ** entry, int * inserted)
int lf_hash_insert_given (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, void ** entry, int * inserted)
void * lf_hash_iterate (LF_HASH_TABLE_ITERATOR * it)
int lf_initialize_transaction_systems (int max_threads)
int lf_io_list_find (void ** list_p, void * key, LF_ENTRY_DESCRIPTOR * edesc, void ** entry)
int lf_io_list_find_or_insert (void ** list_p, void * new_entry, LF_ENTRY_DESCRIPTOR * edesc, void ** entry)
int lf_list_delete (LF_TRAN_ENTRY * tran, void ** list_p, void * key, void * locked_entry, int * behavior_flags, LF_ENTRY_DESCRIPTOR * edesc, LF_FREELIST * freelist, int * success)
int lf_list_find (LF_TRAN_ENTRY * tran, void ** list_p, void * key, int * behavior_flags, LF_ENTRY_DESCRIPTOR * edesc, void ** entry)
void * lf_stack_pop (void ** top, LF_ENTRY_DESCRIPTOR * edesc)
int lf_stack_push (void ** top, void * entry, LF_ENTRY_DESCRIPTOR * edesc)
void lf_tran_compute_minimum_transaction_id (LF_TRAN_SYSTEM * sys)
void lf_tran_destroy_entry (LF_TRAN_ENTRY * entry)
void lf_tran_end (LF_TRAN_ENTRY * entry)
LF_TRAN_ENTRY * lf_tran_request_entry (LF_TRAN_SYSTEM * sys)
void lf_tran_return_entry (LF_TRAN_ENTRY * entry)
void lf_tran_start (LF_TRAN_ENTRY * entry, bool incr)
void lf_tran_system_destroy (LF_TRAN_SYSTEM * sys)
int lf_tran_system_init (LF_TRAN_SYSTEM * sys, int max_threads)

Public Static Functions

Type Name
int lf_freelist_alloc_block (LF_FREELIST * freelist)
int lf_hash_delete_internal (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, void * locked_entry, int bflags, int * success)
int lf_hash_insert_internal (LF_TRAN_ENTRY * tran, LF_HASH_TABLE * table, void * key, int bflags, void ** entry, int * inserted)
int lf_list_insert_internal (LF_TRAN_ENTRY * tran, void ** list_p, void * key, int * behavior_flags, LF_ENTRY_DESCRIPTOR * edesc, LF_FREELIST * freelist, void ** entry, int * inserted)

Macros

Type Name
define ADDR_HAS_MARK (p) ((([**long**](broker__monitor_8c.md#function-timeout) [**long**](broker__monitor_8c.md#function-timeout) [**volatile**](broker__monitor_8c.md#function-timeout)) ([**p**](dynamic__load_8c.md#variable-p))) & 0x1)
define ADDR_STRIP_MARK (p) (([**void**](broker__monitor_8c.md#function-timeout) \* [**volatile**](broker__monitor_8c.md#function-timeout)) ((([**long**](broker__monitor_8c.md#function-timeout) [**long**](broker__monitor_8c.md#function-timeout) [**volatile**](broker__monitor_8c.md#function-timeout)) ([**p**](dynamic__load_8c.md#variable-p))) & (~(([**long**](broker__monitor_8c.md#function-timeout) [**long**](broker__monitor_8c.md#function-timeout)) 0x1))))
define ADDR_WITH_MARK (p) (([**void**](broker__monitor_8c.md#function-timeout) \* [**volatile**](broker__monitor_8c.md#function-timeout)) ((([**long**](broker__monitor_8c.md#function-timeout) [**long**](broker__monitor_8c.md#function-timeout) [**volatile**](broker__monitor_8c.md#function-timeout)) ([**p**](dynamic__load_8c.md#variable-p))) \| 0x1))
define LF_ASSERT_USE_MUTEX_OR_TRAN_STARTED () /* multi line expression */
define LF_END_TRAN () [**if**](dynamic__load_8c.md#function-if) (is\_tran\_started) [**lf\_tran\_end\_with\_mb**](lock__free_8h.md#define-lf_tran_end_with_mb) (tran)
define LF_END_TRAN_FORCE () [**assert**](malloc__2__8__3_8c.md#define-assert) (is\_tran\_started); [**lf\_tran\_end\_with\_mb**](lock__free_8h.md#define-lf_tran_end_with_mb) (tran); is\_tran\_started = [**false**](broker__monitor_8c.md#function-timeout)
define LF_END_TRAN_FORCE () [**assert**](malloc__2__8__3_8c.md#define-assert) (is\_tran\_started); [**lf\_tran\_end\_with\_mb**](lock__free_8h.md#define-lf_tran_end_with_mb) (tran); is\_tran\_started = [**false**](broker__monitor_8c.md#function-timeout)
define LF_LOCK_ENTRY (tolock) /* multi line expression */
define LF_LOCK_ENTRY (tolock) /* multi line expression */
define LF_PROMOTE_TRAN_FORCE () [**assert**](malloc__2__8__3_8c.md#define-assert) (is\_tran\_started); [**MEMORY\_BARRIER**](broker__monitor_8c.md#function-timeout) (); [**lf\_tran\_start\_with\_mb**](lock__free_8h.md#define-lf_tran_start_with_mb) (tran, [**true**](broker__monitor_8c.md#function-timeout))
define LF_START_TRAN () [**if**](dynamic__load_8c.md#function-if) (!is\_tran\_started) [**lf\_tran\_start\_with\_mb**](lock__free_8h.md#define-lf_tran_start_with_mb) (tran, [**false**](broker__monitor_8c.md#function-timeout)); is\_tran\_started = [**true**](broker__monitor_8c.md#function-timeout)
define LF_START_TRAN_FORCE () [**assert**](malloc__2__8__3_8c.md#define-assert) (!is\_tran\_started); [**lf\_tran\_start\_with\_mb**](lock__free_8h.md#define-lf_tran_start_with_mb) (tran, [**false**](broker__monitor_8c.md#function-timeout)); is\_tran\_started = [**true**](broker__monitor_8c.md#function-timeout)
define LF_START_TRAN_FORCE () [**assert**](malloc__2__8__3_8c.md#define-assert) (!is\_tran\_started); [**lf\_tran\_start\_with\_mb**](lock__free_8h.md#define-lf_tran_start_with_mb) (tran, [**false**](broker__monitor_8c.md#function-timeout)); is\_tran\_started = [**true**](broker__monitor_8c.md#function-timeout)
define LF_UNITTEST_INC (lf_stat, incval)
define LF_UNLOCK_ENTRY () /* multi line expression */
define LF_UNLOCK_ENTRY_FORCE () /* multi line expression */
define LF_UNLOCK_ENTRY_FORCE () /* multi line expression */
define OF_GET_PTR (p, o) ([**void**](broker__monitor_8c.md#function-timeout) \*) ((([**char**](broker__monitor_8c.md#function-timeout) \*)([**p**](dynamic__load_8c.md#variable-p))) + (o))
define OF_GET_PTR_DEREF (p, o) (\*[**OF\_GET\_REF**](lock__free_8c.md#define-of_get_ref) ([**p**](dynamic__load_8c.md#variable-p),o))
define OF_GET_REF (p, o) ([**void**](broker__monitor_8c.md#function-timeout) \* [**volatile**](broker__monitor_8c.md#function-timeout) \*) ((([**char**](broker__monitor_8c.md#function-timeout) \*)([**p**](dynamic__load_8c.md#variable-p))) + (o))

Public Attributes Documentation

variable catalog_Ts

LF_TRAN_SYSTEM catalog_Ts;

variable dwb_slots_Ts

LF_TRAN_SYSTEM dwb_slots_Ts;

variable fpcache_Ts

LF_TRAN_SYSTEM fpcache_Ts;

variable free_sort_list_Ts

LF_TRAN_SYSTEM free_sort_list_Ts;

variable global_unique_stats_Ts

LF_TRAN_SYSTEM global_unique_stats_Ts;

variable hfid_table_Ts

LF_TRAN_SYSTEM hfid_table_Ts;

variable obj_lock_ent_Ts

LF_TRAN_SYSTEM obj_lock_ent_Ts;

variable obj_lock_res_Ts

LF_TRAN_SYSTEM obj_lock_res_Ts;

variable sessions_Ts

LF_TRAN_SYSTEM sessions_Ts;

variable spage_saving_Ts

LF_TRAN_SYSTEM spage_saving_Ts;

variable xcache_Ts

LF_TRAN_SYSTEM xcache_Ts;

Public Static Attributes Documentation

variable lf_claims

INT64 lf_claims;

variable lf_claims_temp

INT64 lf_claims_temp;

variable lf_clears

INT64 lf_clears;

variable lf_deletes

INT64 lf_deletes;

variable lf_deletes_restart

INT64 lf_deletes_restart;

variable lf_hash_size

INT64 lf_hash_size;

variable lf_inserts

INT64 lf_inserts;

variable lf_inserts_restart

INT64 lf_inserts_restart;

variable lf_list_deletes

INT64 lf_list_deletes;

variable lf_list_deletes_fail_mark_next

INT64 lf_list_deletes_fail_mark_next;

INT64 lf_list_deletes_fail_unlink;

variable lf_list_deletes_found

INT64 lf_list_deletes_found;

variable lf_list_deletes_not_found

INT64 lf_list_deletes_not_found;

variable lf_list_deletes_not_match

INT64 lf_list_deletes_not_match;

INT64 lf_list_deletes_success_unlink;

variable lf_list_inserts

INT64 lf_list_inserts;

variable lf_list_inserts_claim

INT64 lf_list_inserts_claim;

INT64 lf_list_inserts_fail_link;

variable lf_list_inserts_found

INT64 lf_list_inserts_found;

variable lf_list_inserts_save_temp_1

INT64 lf_list_inserts_save_temp_1;

variable lf_list_inserts_save_temp_2

INT64 lf_list_inserts_save_temp_2;

INT64 lf_list_inserts_success_link;

variable lf_retires

INT64 lf_retires;

variable lf_temps

INT64 lf_temps;

variable lf_transports

INT64 lf_transports;

variable tran_systems_initialized

bool tran_systems_initialized;

Public Functions Documentation

function lf_callback_vpid_compare

int lf_callback_vpid_compare (
    void * vpid_1,
    void * vpid_2
) 

function lf_callback_vpid_copy

int lf_callback_vpid_copy (
    void * src,
    void * dest
) 

function lf_callback_vpid_hash

unsigned  int lf_callback_vpid_hash (
    void * vpid,
    int htsize
) 

function lf_destroy_transaction_systems

void lf_destroy_transaction_systems (
    void
) 

function lf_freelist_claim

void * lf_freelist_claim (
    LF_TRAN_ENTRY * tran_entry,
    LF_FREELIST * freelist
) 

function lf_freelist_destroy

void lf_freelist_destroy (
    LF_FREELIST * freelist
) 

function lf_freelist_init

int lf_freelist_init (
    LF_FREELIST * freelist,
    int initial_blocks,
    int block_size,
    LF_ENTRY_DESCRIPTOR * edesc,
    LF_TRAN_SYSTEM * tran_system
) 

function lf_freelist_retire

int lf_freelist_retire (
    LF_TRAN_ENTRY * tran_entry,
    LF_FREELIST * freelist,
    void * entry
) 

function lf_freelist_transport

int lf_freelist_transport (
    LF_TRAN_ENTRY * tran_entry,
    LF_FREELIST * freelist
) 

function lf_hash_clear

void lf_hash_clear (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table
) 

function lf_hash_create_iterator

void lf_hash_create_iterator (
    LF_HASH_TABLE_ITERATOR * iterator,
    LF_TRAN_ENTRY * tran_entry,
    LF_HASH_TABLE * table
) 

function lf_hash_delete

int lf_hash_delete (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    int * success
) 

function lf_hash_delete_already_locked

int lf_hash_delete_already_locked (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    void * locked_entry,
    int * success
) 

function lf_hash_destroy

void lf_hash_destroy (
    LF_HASH_TABLE * table
) 

function lf_hash_find

int lf_hash_find (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    void ** entry
) 

function lf_hash_find_or_insert

int lf_hash_find_or_insert (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    void ** entry,
    int * inserted
) 

function lf_hash_init

int lf_hash_init (
    LF_HASH_TABLE * table,
    LF_FREELIST * freelist,
    unsigned  int hash_size,
    LF_ENTRY_DESCRIPTOR * edesc
) 

function lf_hash_insert

int lf_hash_insert (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    void ** entry,
    int * inserted
) 

function lf_hash_insert_given

int lf_hash_insert_given (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    void ** entry,
    int * inserted
) 

function lf_hash_iterate

void * lf_hash_iterate (
    LF_HASH_TABLE_ITERATOR * it
) 

function lf_initialize_transaction_systems

int lf_initialize_transaction_systems (
    int max_threads
) 

function lf_io_list_find

int lf_io_list_find (
    void ** list_p,
    void * key,
    LF_ENTRY_DESCRIPTOR * edesc,
    void ** entry
) 

function lf_io_list_find_or_insert

int lf_io_list_find_or_insert (
    void ** list_p,
    void * new_entry,
    LF_ENTRY_DESCRIPTOR * edesc,
    void ** entry
) 

function lf_list_delete

int lf_list_delete (
    LF_TRAN_ENTRY * tran,
    void ** list_p,
    void * key,
    void * locked_entry,
    int * behavior_flags,
    LF_ENTRY_DESCRIPTOR * edesc,
    LF_FREELIST * freelist,
    int * success
) 

function lf_list_find

int lf_list_find (
    LF_TRAN_ENTRY * tran,
    void ** list_p,
    void * key,
    int * behavior_flags,
    LF_ENTRY_DESCRIPTOR * edesc,
    void ** entry
) 

function lf_stack_pop

void * lf_stack_pop (
    void ** top,
    LF_ENTRY_DESCRIPTOR * edesc
) 

function lf_stack_push

int lf_stack_push (
    void ** top,
    void * entry,
    LF_ENTRY_DESCRIPTOR * edesc
) 

function lf_tran_compute_minimum_transaction_id

void lf_tran_compute_minimum_transaction_id (
    LF_TRAN_SYSTEM * sys
) 

function lf_tran_destroy_entry

void lf_tran_destroy_entry (
    LF_TRAN_ENTRY * entry
) 

function lf_tran_end

void lf_tran_end (
    LF_TRAN_ENTRY * entry
) 

function lf_tran_request_entry

LF_TRAN_ENTRY * lf_tran_request_entry (
    LF_TRAN_SYSTEM * sys
) 

function lf_tran_return_entry

void lf_tran_return_entry (
    LF_TRAN_ENTRY * entry
) 

function lf_tran_start

void lf_tran_start (
    LF_TRAN_ENTRY * entry,
    bool incr
) 

function lf_tran_system_destroy

void lf_tran_system_destroy (
    LF_TRAN_SYSTEM * sys
) 

function lf_tran_system_init

int lf_tran_system_init (
    LF_TRAN_SYSTEM * sys,
    int max_threads
) 

Public Static Functions Documentation

function lf_freelist_alloc_block

static int lf_freelist_alloc_block (
    LF_FREELIST * freelist
) 

function lf_hash_delete_internal

static int lf_hash_delete_internal (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    void * locked_entry,
    int bflags,
    int * success
) 

function lf_hash_insert_internal

static int lf_hash_insert_internal (
    LF_TRAN_ENTRY * tran,
    LF_HASH_TABLE * table,
    void * key,
    int bflags,
    void ** entry,
    int * inserted
) 

function lf_list_insert_internal

static int lf_list_insert_internal (
    LF_TRAN_ENTRY * tran,
    void ** list_p,
    void * key,
    int * behavior_flags,
    LF_ENTRY_DESCRIPTOR * edesc,
    LF_FREELIST * freelist,
    void ** entry,
    int * inserted
) 

Macro Definition Documentation

define ADDR_HAS_MARK

#define ADDR_HAS_MARK (
    p
) `((( long  long  volatile ) ( p )) & 0x1)`

define ADDR_STRIP_MARK

#define ADDR_STRIP_MARK (
    p
) `(( void * volatile ) ((( long  long  volatile ) ( p )) & (~(( long  long ) 0x1))))`

define ADDR_WITH_MARK

#define ADDR_WITH_MARK (
    p
) `(( void * volatile ) ((( long  long  volatile ) ( p )) | 0x1))`

define LF_ASSERT_USE_MUTEX_OR_TRAN_STARTED

#define LF_ASSERT_USE_MUTEX_OR_TRAN_STARTED (

) `assert (is_tran_started == ! edesc ->using_mutex); /* The  transaction  is started if  and  only  if  we  don ' t use mutex */ \ assert (! edesc ->using_mutex || entry_mutex ) /* If  we use mutex, we  have  a mutex locked. */`

define LF_END_TRAN

#define LF_END_TRAN (

) `if (is_tran_started) lf_tran_end_with_mb (tran)`

define LF_END_TRAN_FORCE

#define LF_END_TRAN_FORCE (

) `assert (is_tran_started); lf_tran_end_with_mb (tran); is_tran_started = false`

define LF_END_TRAN_FORCE

#define LF_END_TRAN_FORCE (

) `assert (is_tran_started); lf_tran_end_with_mb (tran); is_tran_started = false`

define LF_LOCK_ENTRY

#define LF_LOCK_ENTRY (
    tolock
) `/* multi line expression */`

define LF_LOCK_ENTRY

#define LF_LOCK_ENTRY (
    tolock
) `/* multi line expression */`

define LF_PROMOTE_TRAN_FORCE

#define LF_PROMOTE_TRAN_FORCE (

) `assert (is_tran_started); MEMORY_BARRIER (); lf_tran_start_with_mb (tran, true )`

define LF_START_TRAN

#define LF_START_TRAN (

) `if (!is_tran_started) lf_tran_start_with_mb (tran, false ); is_tran_started = true`

define LF_START_TRAN_FORCE

#define LF_START_TRAN_FORCE (

) `assert (!is_tran_started); lf_tran_start_with_mb (tran, false ); is_tran_started = true`

define LF_START_TRAN_FORCE

#define LF_START_TRAN_FORCE (

) `assert (!is_tran_started); lf_tran_start_with_mb (tran, false ); is_tran_started = true`

define LF_UNITTEST_INC

#define LF_UNITTEST_INC (
    lf_stat,
    incval
) 

define LF_UNLOCK_ENTRY

#define LF_UNLOCK_ENTRY (

) `/* multi line expression */`

define LF_UNLOCK_ENTRY_FORCE

#define LF_UNLOCK_ENTRY_FORCE (

) `assert ( edesc ->using_mutex && entry_mutex != NULL ); \ pthread_mutex_unlock ( entry_mutex ); \ entry_mutex = NULL`

define LF_UNLOCK_ENTRY_FORCE

#define LF_UNLOCK_ENTRY_FORCE (

) `assert ( edesc ->using_mutex && entry_mutex != NULL ); \ pthread_mutex_unlock ( entry_mutex ); \ entry_mutex = NULL`

define OF_GET_PTR

#define OF_GET_PTR (
    p,
    o
) `( void *) ((( char *)( p )) + (o))`

define OF_GET_PTR_DEREF

#define OF_GET_PTR_DEREF (
    p,
    o
) `(* OF_GET_REF ( p ,o))`

define OF_GET_REF

#define OF_GET_REF (
    p,
    o
) `( void * volatile *) ((( char *)( p )) + (o))`


The documentation for this class was generated from the following file cubrid/src/base/lock_free.c