CUBRID Engine  latest
xasl_cache.c File Reference
#include "xasl_cache.h"
#include "binaryheap.h"
#include "compile_context.h"
#include "config.h"
#include "system_parameter.h"
#include "list_file.h"
#include "perf_monitor.h"
#include "query_executor.h"
#include "query_manager.h"
#include "statistics_sr.h"
#include "stream_to_xasl.h"
#include "thread_entry.hpp"
#include "thread_lockfree_hash_map.hpp"
#include "thread_manager.hpp"
#include "xasl_unpack_info.hpp"
#include <algorithm>
#include <assert.h>
Include dependency graph for xasl_cache.c:

Go to the source code of this file.

Classes

struct  xcache_stats
 
struct  xcache_cleanup_candidate
 
struct  xcache
 

Macros

#define XCACHE_ENTRY_MARK_DELETED   ((INT32) 0x80000000)
 
#define XCACHE_ENTRY_TO_BE_RECOMPILED   ((INT32) 0x40000000)
 
#define XCACHE_ENTRY_WAS_RECOMPILED   ((INT32) 0x20000000)
 
#define XCACHE_ENTRY_SKIP_TO_BE_RECOMPILED   ((INT32) 0x10000000)
 
#define XCACHE_ENTRY_CLEANUP   ((INT32) 0x08000000)
 
#define XCACHE_ENTRY_RECOMPILED_REQUESTED   ((INT32) 0x04000000)
 
#define XCACHE_ENTRY_FLAGS_MASK   ((INT32) 0xFF000000)
 
#define XCACHE_ENTRY_FIX_COUNT_MASK   ((INT32) 0x00FFFFFF)
 
#define XCACHE_ENTRY_DELETED_BY_ME   (XCACHE_ENTRY_MARK_DELETED | XCACHE_ENTRY_FIX_COUNT_MASK)
 
#define XCACHE_PTR_TO_KEY(ptr)   ((XASL_ID *) ptr)
 
#define XCACHE_PTR_TO_ENTRY(ptr)   ((XASL_CACHE_ENTRY *) ptr)
 
#define XCACHE_STATS_INITIALIZER   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
 
#define xcache_Enabled   xcache_Global.enabled
 
#define xcache_Soft_capacity   xcache_Global.soft_capacity
 
#define xcache_Time_threshold   xcache_Global.time_threshold
 
#define xcache_Last_cleaned_time   xcache_Global.last_cleaned_time
 
#define xcache_Hashmap   xcache_Global.hashmap
 
#define xcache_Entry_count   xcache_Global.entry_count
 
#define xcache_Log   xcache_Global.logging_enabled
 
#define xcache_Max_clones   xcache_Global.max_clones
 
#define xcache_Cleanup_flag   xcache_Global.cleanup_flag
 
#define xcache_Cleanup_bh   xcache_Global.cleanup_bh
 
#define xcache_Cleanup_array   xcache_Global.cleanup_array
 
#define XCACHE_STAT_GET(name)   ATOMIC_LOAD_64 (&xcache_Global.stats.name)
 
#define XCACHE_STAT_INC(name)   ATOMIC_INC_64 (&xcache_Global.stats.name, 1)
 
#define TIME_DIFF_SEC(t1, t2)   (t1.tv_sec - t2.tv_sec)
 
#define XCACHE_ATOMIC_CAS_CACHE_FLAG(xid, oldcf, newcf)   (ATOMIC_CAS_32 (&(xid)->cache_flag, oldcf, newcf))
 
#define XCACHE_CLEANUP_RATIO   0.2
 
#define XCACHE_CLEANUP_MIN_NUM_ENTRIES   20
 
#define XCACHE_CLEANUP_NUM_ENTRIES(capacity)   (MAX ((int) (2 * XCACHE_CLEANUP_RATIO * (capacity)), XCACHE_CLEANUP_MIN_NUM_ENTRIES))
 
#define XCACHE_RT_TIMEDIFF_IN_SEC   360 /* 10 minutes */
 
#define XCACHE_RT_MAX_THRESHOLD   10000 /* 10k pages */
 
#define XCACHE_RT_FACTOR   10 /* 10x or 0.1x cardinal change */
 
#define XCACHE_RT_CLASS_STAT_NEED_UPDATE(class_pages, heap_pages)
 
#define xcache_check_logging()   (xcache_Log = prm_get_bool_value (PRM_ID_XASL_CACHE_LOGGING))
 
#define xcache_log(...)   if (xcache_Log) _er_log_debug (ARG_FILE_LINE, "XASL CACHE: " __VA_ARGS__)
 
#define xcache_log_error(...)   if (xcache_Log) _er_log_debug (ARG_FILE_LINE, "XASL CACHE ERROR: " __VA_ARGS__)
 
#define XCACHE_LOG_TRAN_TEXT   "\t tran = %d \n"
 
#define XCACHE_LOG_TRAN_ARGS(thrd)   LOG_FIND_THREAD_TRAN_INDEX (thrd)
 
#define XCACHE_LOG_ERROR_TEXT   "\t error_code = %d \n"
 
#define XCACHE_LOG_ENTRY_PTR_TEXT   "\t\t entry ptr = %p \n"
 
#define XCACHE_LOG_SHA1_TEXT   "\t\t\t sha1 = %08x | %08x | %08x | %08x | %08x \n"
 
#define XCACHE_LOG_SHA1_ARGS(sha1)   SHA1_AS_ARGS (sha1)
 
#define XCACHE_LOG_TIME_STORED_TEXT   "\t\t\t time stored = %d sec, %d usec \n"
 
#define XCACHE_LOG_EXEINFO_TEXT
 
#define XCACHE_LOG_CLONE
 
#define XCACHE_LOG_XASL_ID_TEXT(msg)
 
#define XCACHE_LOG_XASL_ID_ARGS(xid)
 
#define XCACHE_LOG_ENTRY_TEXT(msg)
 
#define XCACHE_LOG_ENTRY_ARGS(xent)
 
#define XCACHE_LOG_CLONE_ARGS(xclone)   XASL_CLONE_AS_ARGS (xclone)
 
#define XCACHE_LOG_OBJECT_TEXT
 
#define XCACHE_LOG_ENTRY_OBJECT_TEXT(msg)
 
#define XCACHE_LOG_ENTRY_OBJECT_ARGS(xent, oidx)
 
#define XCACHE_DELETE_XIDS_SIZE   1024
 

Typedefs

typedef struct xcache_stats XCACHE_STATS
 
typedef struct xcache_cleanup_candidate XCACHE_CLEANUP_CANDIDATE
 
using xcache_hashmap_type = cubthread::lockfree_hashmap< xasl_id, xasl_cache_ent >
 
using xcache_hashmap_iterator = xcache_hashmap_type::iterator
 
typedef struct xcache XCACHE
 

Functions

static void * xcache_entry_alloc (void)
 
static int xcache_entry_free (void *entry)
 
static int xcache_entry_init (void *entry)
 
static int xcache_entry_uninit (void *entry)
 
static int xcache_copy_key (void *src, void *dest)
 
static int xcache_compare_key (void *key1, void *key2)
 
static unsigned int xcache_hash_key (void *key, int hash_table_size)
 
static bool xcache_entry_mark_deleted (THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry)
 
static bool xcache_entry_set_request_recompile_flag (THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry, bool set_flag)
 
static void xcache_clone_decache (THREAD_ENTRY *thread_p, XASL_CLONE *xclone)
 
static void xcache_cleanup (THREAD_ENTRY *thread_p)
 
static BH_CMP_RESULT xcache_compare_cleanup_candidates (const void *left, const void *right, BH_CMP_ARG ignore_arg)
 
static bool xcache_check_recompilation_threshold (THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry)
 
static void xcache_invalidate_entries (THREAD_ENTRY *thread_p, bool(*invalidate_check)(XASL_CACHE_ENTRY *, const OID *), const OID *arg)
 
static bool xcache_entry_is_related_to_oid (XASL_CACHE_ENTRY *xcache_entry, const OID *related_to_oid)
 
static XCACHE_CLEANUP_REASON xcache_need_cleanup (void)
 
int xcache_initialize (THREAD_ENTRY *thread_p)
 
void xcache_finalize (THREAD_ENTRY *thread_p)
 
int xcache_find_sha1 (THREAD_ENTRY *thread_p, const SHA1Hash *sha1, const XASL_CACHE_SEARCH_MODE search_mode, XASL_CACHE_ENTRY **xcache_entry, xasl_cache_rt_check_result *rt_check)
 
int xcache_find_xasl_id_for_execute (THREAD_ENTRY *thread_p, const XASL_ID *xid, XASL_CACHE_ENTRY **xcache_entry, XASL_CLONE *xclone)
 
void xcache_unfix (THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry)
 
int xcache_insert (THREAD_ENTRY *thread_p, const compile_context *context, XASL_STREAM *stream, int n_oid, const OID *class_oids, const int *class_locks, const int *tcards, XASL_CACHE_ENTRY **xcache_entry)
 
int xcache_invalidate_qcaches (THREAD_ENTRY *thread_p, const OID *oid)
 
void xcache_remove_by_oid (THREAD_ENTRY *thread_p, const OID *oid)
 
void xcache_drop_all (THREAD_ENTRY *thread_p)
 
void xcache_dump (THREAD_ENTRY *thread_p, FILE *fp)
 
bool xcache_can_entry_cache_list (XASL_CACHE_ENTRY *xcache_entry)
 
void xcache_retire_clone (THREAD_ENTRY *thread_p, XASL_CACHE_ENTRY *xcache_entry, XASL_CLONE *xclone)
 
int xcache_get_entry_count (void)
 
bool xcache_uses_clones (void)
 

Variables

XCACHE xcache_Global
 
static LF_ENTRY_DESCRIPTOR xcache_Entry_descriptor
 

Macro Definition Documentation

#define TIME_DIFF_SEC (   t1,
  t2 
)    (t1.tv_sec - t2.tv_sec)

Definition at line 156 of file xasl_cache.c.

Referenced by xcache_cleanup(), and xcache_need_cleanup().

#define XCACHE_ATOMIC_CAS_CACHE_FLAG (   xid,
  oldcf,
  newcf 
)    (ATOMIC_CAS_32 (&(xid)->cache_flag, oldcf, newcf))
#define xcache_Cleanup_array   xcache_Global.cleanup_array

Definition at line 150 of file xasl_cache.c.

Referenced by xcache_cleanup(), and xcache_initialize().

#define xcache_Cleanup_bh   xcache_Global.cleanup_bh

Definition at line 149 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_finalize(), and xcache_initialize().

#define xcache_Cleanup_flag   xcache_Global.cleanup_flag

Definition at line 148 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_initialize(), and xcache_insert().

#define XCACHE_CLEANUP_MIN_NUM_ENTRIES   20

Definition at line 193 of file xasl_cache.c.

#define XCACHE_CLEANUP_NUM_ENTRIES (   capacity)    (MAX ((int) (2 * XCACHE_CLEANUP_RATIO * (capacity)), XCACHE_CLEANUP_MIN_NUM_ENTRIES))

Definition at line 194 of file xasl_cache.c.

Referenced by xcache_initialize().

#define XCACHE_CLEANUP_RATIO   0.2

Definition at line 192 of file xasl_cache.c.

Referenced by xcache_cleanup().

#define XCACHE_DELETE_XIDS_SIZE   1024
#define XCACHE_ENTRY_CLEANUP   ((INT32) 0x08000000)

Definition at line 50 of file xasl_cache.c.

Referenced by xcache_cleanup(), and xcache_compare_key().

#define xcache_Entry_count   xcache_Global.entry_count
#define XCACHE_ENTRY_DELETED_BY_ME   (XCACHE_ENTRY_MARK_DELETED | XCACHE_ENTRY_FIX_COUNT_MASK)

Definition at line 60 of file xasl_cache.c.

Referenced by xcache_compare_key(), xcache_entry_mark_deleted(), and xcache_unfix().

#define XCACHE_ENTRY_FIX_COUNT_MASK   ((INT32) 0x00FFFFFF)

Definition at line 54 of file xasl_cache.c.

Referenced by xcache_dump(), xcache_entry_uninit(), xcache_insert(), and xcache_unfix().

#define XCACHE_ENTRY_FLAGS_MASK   ((INT32) 0xFF000000)
#define XCACHE_ENTRY_RECOMPILED_REQUESTED   ((INT32) 0x04000000)
#define XCACHE_ENTRY_SKIP_TO_BE_RECOMPILED   ((INT32) 0x10000000)

Definition at line 49 of file xasl_cache.c.

Referenced by xcache_compare_key(), and xcache_insert().

#define XCACHE_ENTRY_TO_BE_RECOMPILED   ((INT32) 0x40000000)
#define XCACHE_ENTRY_WAS_RECOMPILED   ((INT32) 0x20000000)
#define xcache_Last_cleaned_time   xcache_Global.last_cleaned_time

Definition at line 143 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_initialize(), and xcache_need_cleanup().

#define xcache_Log   xcache_Global.logging_enabled

Definition at line 146 of file xasl_cache.c.

#define XCACHE_LOG_CLONE
Value:
"\t\t\t xasl = %p \n" \
"\t\t\t xasl_buf = %p \n"

Definition at line 225 of file xasl_cache.c.

Referenced by xcache_find_xasl_id_for_execute().

#define XCACHE_LOG_CLONE_ARGS (   xclone)    XASL_CLONE_AS_ARGS (xclone)

Definition at line 248 of file xasl_cache.c.

Referenced by xcache_find_xasl_id_for_execute().

#define XCACHE_LOG_ENTRY_ARGS (   xent)
Value:
(xent), \
XCACHE_LOG_XASL_ID_ARGS (&(xent)->xasl_id), \
EXEINFO_AS_ARGS(&(xent)->sql_info), \
(xent)->n_related_objects
#define EXEINFO_AS_ARGS(einfo)
Definition: xasl_cache.h:84
#define XCACHE_LOG_XASL_ID_ARGS(xid)
Definition: xasl_cache.c:232

Definition at line 243 of file xasl_cache.c.

Referenced by xcache_check_recompilation_threshold(), xcache_entry_mark_deleted(), xcache_entry_set_request_recompile_flag(), xcache_entry_uninit(), xcache_find_sha1(), xcache_find_xasl_id_for_execute(), xcache_insert(), and xcache_unfix().

#define XCACHE_LOG_ENTRY_OBJECT_ARGS (   xent,
  oidx 
)
Value:
OID_AS_ARGS (&(xent)->related_objects[oidx].oid), \
LOCK_TO_LOCKMODE_STRING ((xent)->related_objects[oidx].lock), \
(xent)->related_objects[oidx].tcard
#define OID_AS_ARGS(oidp)
Definition: oid.h:39
#define LOCK_TO_LOCKMODE_STRING(lock)

Definition at line 256 of file xasl_cache.c.

Referenced by xcache_find_xasl_id_for_execute().

#define XCACHE_LOG_ENTRY_OBJECT_TEXT (   msg)
Value:
"\t\t " msg ": \n" \
#define XCACHE_LOG_OBJECT_TEXT
Definition: xasl_cache.c:250

Definition at line 253 of file xasl_cache.c.

Referenced by xcache_find_xasl_id_for_execute().

#define XCACHE_LOG_ENTRY_PTR_TEXT   "\t\t entry ptr = %p \n"

Definition at line 216 of file xasl_cache.c.

#define XCACHE_LOG_ENTRY_TEXT (   msg)
#define xcache_log_error (   ...)    if (xcache_Log) _er_log_debug (ARG_FILE_LINE, "XASL CACHE ERROR: " __VA_ARGS__)
#define XCACHE_LOG_ERROR_TEXT   "\t error_code = %d \n"

Definition at line 214 of file xasl_cache.c.

#define XCACHE_LOG_EXEINFO_TEXT
Value:
"\t\t\t user text = %s \n" \
"\t\t\t plan text = %s \n" \
"\t\t\t hash text = %s \n"

Definition at line 222 of file xasl_cache.c.

#define XCACHE_LOG_OBJECT_TEXT
Value:
"\t\t\t oid = %d|%d|%d \n" \
"\t\t\t lock = %s \n" \
"\t\t\t tcard = %d \n"

Definition at line 250 of file xasl_cache.c.

#define XCACHE_LOG_SHA1_ARGS (   sha1)    SHA1_AS_ARGS (sha1)

Definition at line 219 of file xasl_cache.c.

Referenced by xcache_compare_key(), xcache_find_sha1(), and xcache_hash_key().

#define XCACHE_LOG_SHA1_TEXT   "\t\t\t sha1 = %08x | %08x | %08x | %08x | %08x \n"

Definition at line 218 of file xasl_cache.c.

Referenced by xcache_compare_key(), xcache_find_sha1(), and xcache_hash_key().

#define XCACHE_LOG_TIME_STORED_TEXT   "\t\t\t time stored = %d sec, %d usec \n"

Definition at line 221 of file xasl_cache.c.

#define XCACHE_LOG_XASL_ID_ARGS (   xid)
Value:
SHA1_AS_ARGS (&(xid)->sha1), \
CACHE_TIME_AS_ARGS (&(xid)->time_stored)
#define SHA1_AS_ARGS(sha1)
Definition: sha1.h:56
#define CACHE_TIME_AS_ARGS(ct)
Definition: cache_time.h:35

Definition at line 232 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_copy_key(), and xcache_find_xasl_id_for_execute().

#define XCACHE_LOG_XASL_ID_TEXT (   msg)
Value:
"\t\t " msg ": \n" \
#define XCACHE_LOG_TIME_STORED_TEXT
Definition: xasl_cache.c:221

Definition at line 228 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_copy_key(), and xcache_find_xasl_id_for_execute().

#define xcache_Max_clones   xcache_Global.max_clones
#define XCACHE_PTR_TO_ENTRY (   ptr)    ((XASL_CACHE_ENTRY *) ptr)

Definition at line 64 of file xasl_cache.c.

Referenced by xcache_entry_init(), and xcache_entry_uninit().

#define XCACHE_PTR_TO_KEY (   ptr)    ((XASL_ID *) ptr)

Definition at line 63 of file xasl_cache.c.

Referenced by xcache_compare_key(), and xcache_hash_key().

#define XCACHE_RT_CLASS_STAT_NEED_UPDATE (   class_pages,
  heap_pages 
)
Value:
(((class_pages) < 100 && (((heap_pages) * 2 < (class_pages)) || ((heap_pages) > (class_pages) * 2))) \
|| ((heap_pages) < (class_pages) * 0.8f) || ((heap_pages) > (class_pages) * 1.2f))

Definition at line 202 of file xasl_cache.c.

Referenced by xcache_check_recompilation_threshold().

#define XCACHE_RT_FACTOR   10 /* 10x or 0.1x cardinal change */

Definition at line 201 of file xasl_cache.c.

Referenced by xcache_check_recompilation_threshold().

#define XCACHE_RT_MAX_THRESHOLD   10000 /* 10k pages */

Definition at line 200 of file xasl_cache.c.

Referenced by xcache_check_recompilation_threshold().

#define XCACHE_RT_TIMEDIFF_IN_SEC   360 /* 10 minutes */

Definition at line 199 of file xasl_cache.c.

Referenced by xcache_check_recompilation_threshold().

#define xcache_Soft_capacity   xcache_Global.soft_capacity

Definition at line 141 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_dump(), xcache_initialize(), and xcache_need_cleanup().

#define XCACHE_STAT_GET (   name)    ATOMIC_LOAD_64 (&xcache_Global.stats.name)

Definition at line 153 of file xasl_cache.c.

Referenced by xcache_dump().

#define XCACHE_STAT_INC (   name)    ATOMIC_INC_64 (&xcache_Global.stats.name, 1)
#define XCACHE_STATS_INITIALIZER   { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }

Definition at line 85 of file xasl_cache.c.

#define xcache_Time_threshold   xcache_Global.time_threshold

Definition at line 142 of file xasl_cache.c.

Referenced by xcache_cleanup(), xcache_initialize(), and xcache_need_cleanup().

Typedef Documentation

typedef struct xcache XCACHE

Definition at line 101 of file xasl_cache.c.

Definition at line 88 of file xasl_cache.c.

using xcache_hashmap_iterator = xcache_hashmap_type::iterator

Definition at line 97 of file xasl_cache.c.

typedef struct xcache_stats XCACHE_STATS

Definition at line 67 of file xasl_cache.c.

Function Documentation

bool xcache_can_entry_cache_list ( XASL_CACHE_ENTRY xcache_entry)

Definition at line 2004 of file xasl_cache.c.

References xasl_id::cache_flag, NULL, xasl_cache_ent::xasl_id, xcache_Enabled, and XCACHE_ENTRY_FLAGS_MASK.

Referenced by xqmgr_execute_query().

Here is the caller graph for this function:

static void xcache_clone_decache ( THREAD_ENTRY thread_p,
XASL_CLONE xclone 
)
static
static BH_CMP_RESULT xcache_compare_cleanup_candidates ( const void *  left,
const void *  right,
BH_CMP_ARG  ignore_arg 
)
static

Definition at line 2319 of file xasl_cache.c.

References BH_EQ, BH_GT, and BH_LT.

Referenced by xcache_cleanup(), and xcache_initialize().

Here is the caller graph for this function:

static int xcache_copy_key ( void *  src,
void *  dest 
)
static
void xcache_drop_all ( THREAD_ENTRY thread_p)

Definition at line 1890 of file xasl_cache.c.

References NULL, xcache_check_logging, xcache_Enabled, xcache_invalidate_entries(), xcache_log, XCACHE_LOG_TRAN_ARGS, and XCACHE_LOG_TRAN_TEXT.

Referenced by xqmgr_drop_all_query_plans().

Here is the caller graph for this function:

static void * xcache_entry_alloc ( void  )
static
static int xcache_entry_free ( void *  entry)
static
static bool xcache_entry_is_related_to_oid ( XASL_CACHE_ENTRY xcache_entry,
const OID related_to_oid 
)
static

Definition at line 1842 of file xasl_cache.c.

References assert, xasl_cache_ent::n_related_objects, NULL, xcache_related_object::oid, OID_EQ, and xasl_cache_ent::related_objects.

Referenced by xcache_invalidate_qcaches(), and xcache_remove_by_oid().

Here is the caller graph for this function:

void xcache_finalize ( THREAD_ENTRY thread_p)

Definition at line 344 of file xasl_cache.c.

References bh_destroy(), db_change_private_heap(), NULL, xcache_check_logging, xcache_Cleanup_bh, xcache_Enabled, xcache_Hashmap, and xcache_log.

Referenced by boot_restart_server(), and xboot_shutdown_server().

Here is the caller graph for this function:

int xcache_get_entry_count ( void  )

Definition at line 2457 of file xasl_cache.c.

References xcache::entry_count.

Referenced by perfmon_get_peek_stats().

Here is the caller graph for this function:

static unsigned int xcache_hash_key ( void *  key,
int  hash_table_size 
)
static
int xcache_insert ( THREAD_ENTRY thread_p,
const compile_context context,
XASL_STREAM stream,
int  n_oid,
const OID class_oids,
const int *  class_locks,
const int *  tcards,
XASL_CACHE_ENTRY **  xcache_entry 
)
int xcache_invalidate_qcaches ( THREAD_ENTRY thread_p,
const OID oid 
)
static XCACHE_CLEANUP_REASON xcache_need_cleanup ( void  )
static
bool xcache_uses_clones ( void  )

Definition at line 2468 of file xasl_cache.c.

References xcache_Max_clones.

Referenced by qexec_clear_regu_var(), qexec_clear_xasl_head(), xcache_dump(), xcache_find_xasl_id_for_execute(), and xcache_retire_clone().

Here is the caller graph for this function:

Variable Documentation

LF_ENTRY_DESCRIPTOR xcache_Entry_descriptor
static
Initial value:
= {
offsetof (XASL_CACHE_ENTRY, stack),
offsetof (XASL_CACHE_ENTRY, next),
offsetof (XASL_CACHE_ENTRY, del_id),
0,
NULL,
}
static int xcache_entry_uninit(void *entry)
Definition: xasl_cache.c:476
#define LF_EM_NOT_USING_MUTEX
Definition: lock_free.h:59
static int xcache_copy_key(void *src, void *dest)
Definition: xasl_cache.c:562
static int xcache_compare_key(void *key1, void *key2)
Definition: xasl_cache.c:587
#define NULL
Definition: freelistheap.h:34
static int xcache_entry_init(void *entry)
Definition: xasl_cache.c:446
static unsigned int xcache_hash_key(void *key, int hash_table_size)
Definition: xasl_cache.c:741
static int xcache_entry_free(void *entry)
Definition: xasl_cache.c:424
static void * xcache_entry_alloc(void)
Definition: xasl_cache.c:400

Definition at line 169 of file xasl_cache.c.

XCACHE xcache_Global

Definition at line 137 of file xasl_cache.c.