File lock_free.h¶
FileList > base > lock_free.h
Go to the source code of this file
#include "dbtype_def.h"#include "lockfree_bitmap.hpp"#include "porting.h"#include <cassert>#include <pthread.h>
Classes¶
| Type | Name |
|---|---|
| struct | lf_entry_descriptor |
| struct | lf_freelist |
| struct | lf_hash_table |
| class | lf_hash_table_cpp <class Key, class T> |
| class | iterator |
| struct | lf_hash_table_iterator |
| struct | lf_tran_entry |
| struct | lf_tran_system |
Public Types¶
| Type | Name |
|---|---|
| typedef void *(* | LF_ENTRY_ALLOC_FUNC |
| typedef struct lf_entry_descriptor | LF_ENTRY_DESCRIPTOR |
| typedef int(* | LF_ENTRY_DUPLICATE_KEY_HANDLER |
| typedef int(* | LF_ENTRY_FREE_FUNC |
| typedef unsigned int(* | LF_ENTRY_HASH_FUNC |
| typedef int(* | LF_ENTRY_INITIALIZE_FUNC |
| typedef int(* | LF_ENTRY_KEY_COMPARE_FUNC |
| typedef int(* | LF_ENTRY_KEY_COPY_FUNC |
| typedef int(* | LF_ENTRY_UNINITIALIZE_FUNC |
| typedef struct lf_freelist | LF_FREELIST |
| typedef struct lf_hash_table | LF_HASH_TABLE |
| typedef struct lf_hash_table_iterator | LF_HASH_TABLE_ITERATOR |
| typedef struct lf_tran_entry | LF_TRAN_ENTRY |
| typedef struct lf_tran_system | LF_TRAN_SYSTEM |
Public Attributes¶
Public Functions¶
Macros¶
| Type | Name |
|---|---|
| define | LF_EM_NOT_USING_MUTEX 0 |
| define | LF_EM_USING_MUTEX 1 |
| define | LF_ENTRY_DESCRIPTOR_INITIALIZER /* multi line expression */ |
| define | LF_ENTRY_DESCRIPTOR_MAX_ALLOC 2147483647 /\* [**MAX**](broker__monitor_8c.md#function-timeout) [**INT**](broker__monitor_8c.md#function-timeout) \*/ |
| define | LF_FREELIST_INITIALIZER { [**NULL**](freelistheap_8h.md#define-null), 0, 0, 0, 0, [**NULL**](freelistheap_8h.md#define-null), [**NULL**](freelistheap_8h.md#define-null) } |
| define | LF_HASH_TABLE_INITIALIZER { [**NULL**](freelistheap_8h.md#define-null), [**NULL**](freelistheap_8h.md#define-null), [**PTHREAD\_MUTEX\_INITIALIZER**](broker__monitor_8c.md#function-timeout), 0, [**NULL**](freelistheap_8h.md#define-null), [**NULL**](freelistheap_8h.md#define-null) } |
| define | LF_LIST_BF_FIND_OR_INSERT (([**int**](broker__monitor_8c.md#function-timeout)) 0x08) |
| define | LF_LIST_BF_INSERT_GIVEN (([**int**](broker__monitor_8c.md#function-timeout)) 0x04) |
| define | LF_LIST_BF_IS_FLAG_SET (bf, flag) ((\*([**bf**](broker__monitor_8c.md#function-timeout)) & ([**flag**](classflag.md))) != 0) |
| define | LF_LIST_BF_LOCK_ON_DELETE (([**int**](broker__monitor_8c.md#function-timeout)) 0x10) |
| define | LF_LIST_BF_NONE 0x0 |
| define | LF_LIST_BF_RESTART_ON_DUPLICATE (([**int**](broker__monitor_8c.md#function-timeout)) 0x02) /\* [**Not**](broker__monitor_8c.md#function-timeout) used [**for**](dynamic__load_8c.md#function-for) now. \*/ |
| define | LF_LIST_BF_RETURN_ON_RESTART (([**int**](broker__monitor_8c.md#function-timeout)) 0x01) |
| define | LF_LIST_BF_SET_FLAG (bf, flag) (\*([**bf**](broker__monitor_8c.md#function-timeout)) = \*([**bf**](broker__monitor_8c.md#function-timeout)) \| ([**flag**](classflag.md))) |
| define | LF_LIST_BR_DUPLICATE (([**int**](broker__monitor_8c.md#function-timeout)) 0x200) /\* [**Not**](broker__monitor_8c.md#function-timeout) used [**for**](dynamic__load_8c.md#function-for) now. \*/ |
| define | LF_LIST_BR_IS_FLAG_SET (br, flag) ((\*([**br**](broker__monitor_8c.md#function-timeout)) & ([**flag**](classflag.md)))) |
| define | LF_LIST_BR_RESTARTED (([**int**](broker__monitor_8c.md#function-timeout)) 0x100) |
| define | LF_LIST_BR_SET_FLAG (br, flag) (\*([**br**](broker__monitor_8c.md#function-timeout)) = \*([**br**](broker__monitor_8c.md#function-timeout)) \| ([**flag**](classflag.md))) |
| define | LF_NULL_TRANSACTION_ID [**ULONG\_MAX**](broker__monitor_8c.md#function-timeout) |
| define | LF_TRAN_CLEANUP_NECESSARY (e) (([**e**](broker__monitor_8c.md#function-timeout))->tran\_system->min\_active\_transaction\_id > ([**e**](broker__monitor_8c.md#function-timeout))->last\_cleanup\_id) |
| define | LF_TRAN_ENTRY_INITIALIZER { 0, [**LF\_NULL\_TRANSACTION\_ID**](lock__free_8h.md#define-lf_null_transaction_id), [**NULL**](freelistheap_8h.md#define-null), [**NULL**](freelistheap_8h.md#define-null), [**NULL**](freelistheap_8h.md#define-null), -1, [**false**](broker__monitor_8c.md#function-timeout) } |
| define | LF_TRAN_SYSTEM_INITIALIZER { [**NULL**](freelistheap_8h.md#define-null), 0, {}, 0, 0, 100, 0, [**NULL**](freelistheap_8h.md#define-null) } |
| define | VOLATILE_ACCESS (v, t) (\*(([**t**](broker__monitor_8c.md#function-timeout) [**volatile**](broker__monitor_8c.md#function-timeout) \*) &(v))) |
| define | lf_tran_end_with_mb (entry) [**MEMORY\_BARRIER**](broker__monitor_8c.md#function-timeout) (); [**lf\_tran\_end**](lock__free_8c.md#function-lf_tran_end) (entry) |
| define | lf_tran_start_with_mb (entry, incr) [**lf\_tran\_start**](lock__free_8c.md#function-lf_tran_start) (entry, [**incr**](broker__monitor_8c.md#function-timeout)); [**MEMORY\_BARRIER**](broker__monitor_8c.md#function-timeout) () |
Public Types Documentation¶
typedef LF_ENTRY_ALLOC_FUNC¶
typedef LF_ENTRY_DESCRIPTOR¶
typedef LF_ENTRY_DUPLICATE_KEY_HANDLER¶
typedef LF_ENTRY_FREE_FUNC¶
typedef LF_ENTRY_HASH_FUNC¶
typedef LF_ENTRY_INITIALIZE_FUNC¶
typedef LF_ENTRY_KEY_COMPARE_FUNC¶
typedef LF_ENTRY_KEY_COPY_FUNC¶
typedef LF_ENTRY_UNINITIALIZE_FUNC¶
typedef LF_FREELIST¶
typedef LF_HASH_TABLE¶
typedef LF_HASH_TABLE_ITERATOR¶
typedef LF_TRAN_ENTRY¶
typedef LF_TRAN_SYSTEM¶
Public Attributes Documentation¶
variable catalog_Ts¶
variable dwb_slots_Ts¶
variable fpcache_Ts¶
variable free_sort_list_Ts¶
variable global_unique_stats_Ts¶
variable hfid_table_Ts¶
variable obj_lock_ent_Ts¶
variable obj_lock_res_Ts¶
variable sessions_Ts¶
variable spage_saving_Ts¶
variable xcache_Ts¶
Public Functions Documentation¶
function lf_callback_vpid_compare¶
function lf_callback_vpid_copy¶
function lf_callback_vpid_hash¶
function lf_destroy_transaction_systems¶
function lf_freelist_claim¶
function lf_freelist_destroy¶
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¶
function lf_freelist_transport¶
function lf_hash_clear¶
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¶
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¶
function lf_hash_find¶
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¶
function lf_initialize_transaction_systems¶
function lf_io_list_find¶
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¶
function lf_stack_push¶
function lf_tran_compute_minimum_transaction_id¶
function lf_tran_destroy_entry¶
function lf_tran_end¶
function lf_tran_request_entry¶
function lf_tran_return_entry¶
function lf_tran_start¶
function lf_tran_system_destroy¶
function lf_tran_system_init¶
Macro Definition Documentation¶
define LF_EM_NOT_USING_MUTEX¶
define LF_EM_USING_MUTEX¶
define LF_ENTRY_DESCRIPTOR_INITIALIZER¶
#define LF_ENTRY_DESCRIPTOR_INITIALIZER `{ 0, 0, 0, 0, 0, 0, LF_ENTRY_DESCRIPTOR_MAX_ALLOC , NULL , NULL , NULL , \ NULL , NULL , NULL , NULL , NULL }`
define LF_ENTRY_DESCRIPTOR_MAX_ALLOC¶
define LF_FREELIST_INITIALIZER¶
define LF_HASH_TABLE_INITIALIZER¶
define LF_LIST_BF_FIND_OR_INSERT¶
define LF_LIST_BF_INSERT_GIVEN¶
define LF_LIST_BF_IS_FLAG_SET¶
define LF_LIST_BF_LOCK_ON_DELETE¶
define LF_LIST_BF_NONE¶
define LF_LIST_BF_RESTART_ON_DUPLICATE¶
define LF_LIST_BF_RETURN_ON_RESTART¶
define LF_LIST_BF_SET_FLAG¶
define LF_LIST_BR_DUPLICATE¶
define LF_LIST_BR_IS_FLAG_SET¶
define LF_LIST_BR_RESTARTED¶
define LF_LIST_BR_SET_FLAG¶
define LF_NULL_TRANSACTION_ID¶
define LF_TRAN_CLEANUP_NECESSARY¶
#define LF_TRAN_CLEANUP_NECESSARY (
e
) `(( e )->tran_system->min_active_transaction_id > ( e )->last_cleanup_id)`
define LF_TRAN_ENTRY_INITIALIZER¶
define LF_TRAN_SYSTEM_INITIALIZER¶
define VOLATILE_ACCESS¶
define lf_tran_end_with_mb¶
define lf_tran_start_with_mb¶
The documentation for this class was generated from the following file cubrid/src/base/lock_free.h