Go to the documentation of this file.
72 p_newkey->f_destructor = destructor;
170 &p_local_xstream->p_thread->p_keytable, p_key, value);
218 #ifndef ABT_CONFIG_ENABLE_VER_20_API
224 *value =
ABTI_ktable_get(&p_local_xstream->p_thread->p_keytable, p_key);
238 for (i = 0; i < p_ktable->
size; i++) {
struct ABT_key_opaque * ABT_key
Work-unit-specific data key handle type.
#define ABTI_SETUP_LOCAL_XSTREAM(pp_local_xstream)
static void * ABTI_ktable_get(ABTD_atomic_ptr *pp_ktable, ABTI_key *p_key)
static ABTI_key * ABTI_key_get_ptr(ABT_key key)
#define ABTI_SETUP_GLOBAL(pp_global)
#define ABTI_CHECK_ERROR(abt_errno)
int ABT_key_get(ABT_key key, void **value)
Get a value associated with a work-unit-specific data key in the calling work unit.
int ABT_key_free(ABT_key *key)
Free a work-unit-specific data key.
#define ABTU_likely(cond)
#define ABTD_ATOMIC_UINT32_STATIC_INITIALIZER(val)
static ABTD_atomic_uint32 g_key_id
static ABTU_ret_err int ABTI_ktable_set(ABTI_global *p_global, ABTI_local *p_local, ABTD_atomic_ptr *pp_ktable, ABTI_key *p_key, void *value)
void ABTI_ktable_free(ABTI_global *p_global, ABTI_local *p_local, ABTI_ktable *p_ktable)
static ABTU_ret_err int ABTU_malloc(size_t size, void **p_ptr)
int ABT_key_create(void(*destructor)(void *value), ABT_key *newkey)
Create a new work-unit-specific data key.
#define ABT_SUCCESS
Error code: the routine returns successfully.
static ABT_key ABTI_key_get_handle(ABTI_key *p_key)
static ABTI_local * ABTI_xstream_get_local(ABTI_xstream *p_xstream)
static uint32_t ABTD_atomic_fetch_add_uint32(ABTD_atomic_uint32 *ptr, uint32_t v)
static void ABTU_free(void *ptr)
void(* f_destructor)(void *value)
struct ABTI_local ABTI_local
ABTD_atomic_ptr p_elems[1]
#define ABTI_CHECK_NULL_KEY_PTR(p)
static void ABTI_mem_free_desc(ABTI_global *p_global, ABTI_local *p_local, void *p_desc)
int ABT_key_set(ABT_key key, void *value)
Associate a value with a work-unit-specific data key in the calling work unit.
static void * ABTD_atomic_relaxed_load_ptr(const ABTD_atomic_ptr *ptr)