LLVM OpenMP 22.0.0git
kmp_lock.h File Reference
#include <limits.h>
#include <stddef.h>
#include "kmp_debug.h"
#include "kmp_os.h"

Go to the source code of this file.

Classes

struct  kmp_lock_pool
struct  kmp_base_tas_lock
union  kmp_tas_lock
union  kmp_ticket_lock
struct  kmp_base_queuing_lock
union  kmp_queuing_lock
struct  kmp_base_drdpa_lock
union  kmp_drdpa_lock
union  kmp_user_lock
struct  kmp_lock_table
struct  kmp_block_of_locks
struct  kmp_backoff_t

Macros

#define KMP_PAD(type, sz)
#define KMP_GTID_DNE   (-2)
#define OMP_LOCK_T_SIZE   sizeof(void *)
#define OMP_NEST_LOCK_T_SIZE   sizeof(void *)
#define OMP_CRITICAL_SIZE   sizeof(void *)
#define INTEL_CRITICAL_SIZE   32
#define kmp_lf_critical_section   1
#define KMP_TAS_LOCK_INITIALIZER(lock)
#define KMP_LOCK_RELEASED   1
#define KMP_LOCK_STILL_HELD   0
#define KMP_LOCK_ACQUIRED_FIRST   1
#define KMP_LOCK_ACQUIRED_NEXT   0
#define KMP_USE_FUTEX
#define KMP_TICKET_LOCK_INITIALIZER(lock)
#define KMP_BOOTSTRAP_LOCK_INITIALIZER(lock)
#define KMP_BOOTSTRAP_LOCK_INIT(lock)
#define KMP_LOCK_INIT(lock)
#define KMP_BIND_USER_LOCK_TEMPLATE(nest, kind, suffix)
#define KMP_BIND_USER_LOCK(kind)
#define KMP_BIND_USER_LOCK_WITH_CHECKS(kind)
#define KMP_BIND_NESTED_USER_LOCK(kind)
#define KMP_BIND_NESTED_USER_LOCK_WITH_CHECKS(kind)
#define KMP_CHECK_USER_LOCK_INIT()
#define KMP_LOCK_BUSY(v, type)
#define KMP_LOCK_FREE(type)
#define KMP_LOCK_STRIP(v)

Typedefs

typedef kmp_uint32 kmp_lock_flags_t
typedef kmp_uint32 kmp_lock_index_t
typedef struct kmp_lock_pool kmp_lock_pool_t
typedef struct kmp_base_tas_lock kmp_base_tas_lock_t
typedef union kmp_tas_lock kmp_tas_lock_t
typedef struct kmp_base_ticket_lock kmp_base_ticket_lock_t
typedef union kmp_ticket_lock kmp_ticket_lock_t
typedef struct kmp_base_queuing_lock kmp_base_queuing_lock_t
typedef union kmp_queuing_lock kmp_queuing_lock_t
typedef struct kmp_base_drdpa_lock kmp_base_drdpa_lock_t
typedef union kmp_drdpa_lock kmp_drdpa_lock_t
typedef kmp_ticket_lock_t kmp_bootstrap_lock_t
typedef kmp_ticket_lock_t kmp_lock_t
typedef enum kmp_lock_kind kmp_lock_kind_t
typedef union kmp_user_lockkmp_user_lock_p
typedef struct kmp_lock_table kmp_lock_table_t
typedef struct kmp_block_of_locks kmp_block_of_locks_t

Enumerations

enum  kmp_lock_kind {
  lk_default = 0 , lk_tas , lk_ticket , lk_queuing ,
  lk_drdpa
}

Functions

void __kmp_validate_locks (void)
int __kmp_acquire_tas_lock (kmp_tas_lock_t *lck, kmp_int32 gtid)
int __kmp_test_tas_lock (kmp_tas_lock_t *lck, kmp_int32 gtid)
int __kmp_release_tas_lock (kmp_tas_lock_t *lck, kmp_int32 gtid)
void __kmp_init_tas_lock (kmp_tas_lock_t *lck)
void __kmp_destroy_tas_lock (kmp_tas_lock_t *lck)
int __kmp_acquire_nested_tas_lock (kmp_tas_lock_t *lck, kmp_int32 gtid)
int __kmp_test_nested_tas_lock (kmp_tas_lock_t *lck, kmp_int32 gtid)
int __kmp_release_nested_tas_lock (kmp_tas_lock_t *lck, kmp_int32 gtid)
void __kmp_init_nested_tas_lock (kmp_tas_lock_t *lck)
void __kmp_destroy_nested_tas_lock (kmp_tas_lock_t *lck)
int __kmp_acquire_ticket_lock (kmp_ticket_lock_t *lck, kmp_int32 gtid)
int __kmp_test_ticket_lock (kmp_ticket_lock_t *lck, kmp_int32 gtid)
int __kmp_test_ticket_lock_with_cheks (kmp_ticket_lock_t *lck, kmp_int32 gtid)
int __kmp_release_ticket_lock (kmp_ticket_lock_t *lck, kmp_int32 gtid)
void __kmp_init_ticket_lock (kmp_ticket_lock_t *lck)
void __kmp_destroy_ticket_lock (kmp_ticket_lock_t *lck)
int __kmp_acquire_nested_ticket_lock (kmp_ticket_lock_t *lck, kmp_int32 gtid)
int __kmp_test_nested_ticket_lock (kmp_ticket_lock_t *lck, kmp_int32 gtid)
int __kmp_release_nested_ticket_lock (kmp_ticket_lock_t *lck, kmp_int32 gtid)
void __kmp_init_nested_ticket_lock (kmp_ticket_lock_t *lck)
void __kmp_destroy_nested_ticket_lock (kmp_ticket_lock_t *lck)
 KMP_BUILD_ASSERT (offsetof(kmp_base_queuing_lock_t, tail_id) % 8==0)
int __kmp_acquire_queuing_lock (kmp_queuing_lock_t *lck, kmp_int32 gtid)
int __kmp_test_queuing_lock (kmp_queuing_lock_t *lck, kmp_int32 gtid)
int __kmp_release_queuing_lock (kmp_queuing_lock_t *lck, kmp_int32 gtid)
void __kmp_init_queuing_lock (kmp_queuing_lock_t *lck)
void __kmp_destroy_queuing_lock (kmp_queuing_lock_t *lck)
int __kmp_acquire_nested_queuing_lock (kmp_queuing_lock_t *lck, kmp_int32 gtid)
int __kmp_test_nested_queuing_lock (kmp_queuing_lock_t *lck, kmp_int32 gtid)
int __kmp_release_nested_queuing_lock (kmp_queuing_lock_t *lck, kmp_int32 gtid)
void __kmp_init_nested_queuing_lock (kmp_queuing_lock_t *lck)
void __kmp_destroy_nested_queuing_lock (kmp_queuing_lock_t *lck)
int __kmp_acquire_drdpa_lock (kmp_drdpa_lock_t *lck, kmp_int32 gtid)
int __kmp_test_drdpa_lock (kmp_drdpa_lock_t *lck, kmp_int32 gtid)
int __kmp_release_drdpa_lock (kmp_drdpa_lock_t *lck, kmp_int32 gtid)
void __kmp_init_drdpa_lock (kmp_drdpa_lock_t *lck)
void __kmp_destroy_drdpa_lock (kmp_drdpa_lock_t *lck)
int __kmp_acquire_nested_drdpa_lock (kmp_drdpa_lock_t *lck, kmp_int32 gtid)
int __kmp_test_nested_drdpa_lock (kmp_drdpa_lock_t *lck, kmp_int32 gtid)
int __kmp_release_nested_drdpa_lock (kmp_drdpa_lock_t *lck, kmp_int32 gtid)
void __kmp_init_nested_drdpa_lock (kmp_drdpa_lock_t *lck)
void __kmp_destroy_nested_drdpa_lock (kmp_drdpa_lock_t *lck)
static int __kmp_acquire_bootstrap_lock (kmp_bootstrap_lock_t *lck)
static int __kmp_test_bootstrap_lock (kmp_bootstrap_lock_t *lck)
static void __kmp_release_bootstrap_lock (kmp_bootstrap_lock_t *lck)
static void __kmp_init_bootstrap_lock (kmp_bootstrap_lock_t *lck)
static void __kmp_destroy_bootstrap_lock (kmp_bootstrap_lock_t *lck)
static int __kmp_acquire_lock (kmp_lock_t *lck, kmp_int32 gtid)
static int __kmp_test_lock (kmp_lock_t *lck, kmp_int32 gtid)
static void __kmp_release_lock (kmp_lock_t *lck, kmp_int32 gtid)
static void __kmp_init_lock (kmp_lock_t *lck)
static void __kmp_destroy_lock (kmp_lock_t *lck)
static kmp_int32 __kmp_get_user_lock_owner (kmp_user_lock_p lck)
static int __kmp_acquire_user_lock_with_checks (kmp_user_lock_p lck, kmp_int32 gtid)
static int __kmp_test_user_lock_with_checks (kmp_user_lock_p lck, kmp_int32 gtid)
static void __kmp_release_user_lock_with_checks (kmp_user_lock_p lck, kmp_int32 gtid)
static void __kmp_init_user_lock_with_checks (kmp_user_lock_p lck)
static void __kmp_destroy_user_lock (kmp_user_lock_p lck)
static void __kmp_destroy_user_lock_with_checks (kmp_user_lock_p lck)
static void __kmp_acquire_nested_user_lock_with_checks (kmp_user_lock_p lck, kmp_int32 gtid, int *depth)
static int __kmp_test_nested_user_lock_with_checks (kmp_user_lock_p lck, kmp_int32 gtid)
static int __kmp_release_nested_user_lock_with_checks (kmp_user_lock_p lck, kmp_int32 gtid)
static void __kmp_init_nested_user_lock_with_checks (kmp_user_lock_p lck)
static void __kmp_destroy_nested_user_lock_with_checks (kmp_user_lock_p lck)
static const ident_t__kmp_get_user_lock_location (kmp_user_lock_p lck)
static void __kmp_set_user_lock_location (kmp_user_lock_p lck, const ident_t *loc)
static void __kmp_set_user_lock_flags (kmp_user_lock_p lck, kmp_lock_flags_t flags)
void __kmp_set_user_lock_vptrs (kmp_lock_kind_t user_lock_kind)
kmp_user_lock_p __kmp_user_lock_allocate (void **user_lock, kmp_int32 gtid, kmp_lock_flags_t flags)
void __kmp_user_lock_free (void **user_lock, kmp_int32 gtid, kmp_user_lock_p lck)
kmp_user_lock_p __kmp_lookup_user_lock (void **user_lock, char const *func)
void __kmp_cleanup_user_locks ()
void __kmp_spin_backoff (kmp_backoff_t *)

Variables

kmp_lock_kind_t __kmp_user_lock_kind
size_t __kmp_base_user_lock_size
size_t __kmp_user_lock_size
kmp_int32(* __kmp_get_user_lock_owner_ )(kmp_user_lock_p lck)
int(* __kmp_acquire_user_lock_with_checks_ )(kmp_user_lock_p lck, kmp_int32 gtid)
int(* __kmp_test_user_lock_with_checks_ )(kmp_user_lock_p lck, kmp_int32 gtid)
int(* __kmp_release_user_lock_with_checks_ )(kmp_user_lock_p lck, kmp_int32 gtid)
void(* __kmp_init_user_lock_with_checks_ )(kmp_user_lock_p lck)
void(* __kmp_destroy_user_lock_ )(kmp_user_lock_p lck)
void(* __kmp_destroy_user_lock_with_checks_ )(kmp_user_lock_p lck)
int(* __kmp_acquire_nested_user_lock_with_checks_ )(kmp_user_lock_p lck, kmp_int32 gtid)
int(* __kmp_test_nested_user_lock_with_checks_ )(kmp_user_lock_p lck, kmp_int32 gtid)
int(* __kmp_release_nested_user_lock_with_checks_ )(kmp_user_lock_p lck, kmp_int32 gtid)
void(* __kmp_init_nested_user_lock_with_checks_ )(kmp_user_lock_p lck)
void(* __kmp_destroy_nested_user_lock_with_checks_ )(kmp_user_lock_p lck)
int(* __kmp_is_user_lock_initialized_ )(kmp_user_lock_p lck)
const ident_t *(* __kmp_get_user_lock_location_ )(kmp_user_lock_p lck)
void(* __kmp_set_user_lock_location_ )(kmp_user_lock_p lck, const ident_t *loc)
kmp_lock_flags_t(* __kmp_get_user_lock_flags_ )(kmp_user_lock_p lck)
void(* __kmp_set_user_lock_flags_ )(kmp_user_lock_p lck, kmp_lock_flags_t flags)
kmp_lock_table_t __kmp_user_lock_table
kmp_user_lock_p __kmp_lock_pool
kmp_block_of_locks_t__kmp_lock_blocks
int __kmp_num_locks_in_block
kmp_backoff_t __kmp_spin_backoff_params

Macro Definition Documentation

◆ INTEL_CRITICAL_SIZE

#define INTEL_CRITICAL_SIZE   32

Definition at line 65 of file kmp_lock.h.

Referenced by __kmp_enter_critical_section_reduce_block().

◆ KMP_BIND_NESTED_USER_LOCK

#define KMP_BIND_NESTED_USER_LOCK ( kind)
Value:
static kmp_bootstrap_lock_t lock
Definition kmp_i18n.cpp:57
#define KMP_BIND_USER_LOCK_TEMPLATE(nest, kind, suffix)
Definition kmp_lock.h:915

Definition at line 932 of file kmp_lock.h.

Referenced by __kmp_set_user_lock_vptrs().

◆ KMP_BIND_NESTED_USER_LOCK_WITH_CHECKS

#define KMP_BIND_NESTED_USER_LOCK_WITH_CHECKS ( kind)
Value:
KMP_BIND_USER_LOCK_TEMPLATE(_nested_, kind, lock_with_checks)

Definition at line 934 of file kmp_lock.h.

Referenced by __kmp_set_user_lock_vptrs().

◆ KMP_BIND_USER_LOCK

#define KMP_BIND_USER_LOCK ( kind)
Value:

Definition at line 929 of file kmp_lock.h.

Referenced by __kmp_set_user_lock_vptrs().

◆ KMP_BIND_USER_LOCK_TEMPLATE

#define KMP_BIND_USER_LOCK_TEMPLATE ( nest,
kind,
suffix )
Value:
{ \
__kmp_acquire##nest##user_lock_with_checks_ = (int (*)( \
kmp_user_lock_p, kmp_int32))__kmp_acquire##nest##kind##_##suffix; \
__kmp_release##nest##user_lock_with_checks_ = (int (*)( \
kmp_user_lock_p, kmp_int32))__kmp_release##nest##kind##_##suffix; \
__kmp_test##nest##user_lock_with_checks_ = (int (*)( \
kmp_user_lock_p, kmp_int32))__kmp_test##nest##kind##_##suffix; \
__kmp_init##nest##user_lock_with_checks_ = \
(void (*)(kmp_user_lock_p))__kmp_init##nest##kind##_##suffix; \
__kmp_destroy##nest##user_lock_with_checks_ = \
(void (*)(kmp_user_lock_p))__kmp_destroy##nest##kind##_##suffix; \
}
void
Definition ittnotify.h:3324
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d int
union kmp_user_lock * kmp_user_lock_p
Definition kmp_lock.h:623
int32_t kmp_int32

Definition at line 915 of file kmp_lock.h.

◆ KMP_BIND_USER_LOCK_WITH_CHECKS

#define KMP_BIND_USER_LOCK_WITH_CHECKS ( kind)
Value:
KMP_BIND_USER_LOCK_TEMPLATE(_, kind, lock_with_checks)

Definition at line 930 of file kmp_lock.h.

Referenced by __kmp_set_user_lock_vptrs().

◆ KMP_BOOTSTRAP_LOCK_INIT

#define KMP_BOOTSTRAP_LOCK_INIT ( lock)
Value:
kmp_ticket_lock_t kmp_bootstrap_lock_t
Definition kmp_lock.h:521
#define KMP_TICKET_LOCK_INITIALIZER(lock)
Definition kmp_lock.h:285

Definition at line 524 of file kmp_lock.h.

◆ KMP_BOOTSTRAP_LOCK_INITIALIZER

#define KMP_BOOTSTRAP_LOCK_INITIALIZER ( lock)
Value:

Definition at line 523 of file kmp_lock.h.

◆ KMP_CHECK_USER_LOCK_INIT

#define KMP_CHECK_USER_LOCK_INIT ( )
Value:
{ \
__kmp_acquire_bootstrap_lock(&__kmp_initz_lock); \
} \
__kmp_release_bootstrap_lock(&__kmp_initz_lock); \
} \
}
volatile int __kmp_init_user_locks
kmp_bootstrap_lock_t __kmp_initz_lock
#define TRUE
Definition kmp.h:1350
#define TCR_4(a)
Definition kmp_os.h:1137

Definition at line 990 of file kmp_lock.h.

Referenced by __kmpc_critical(), __kmpc_init_lock(), and __kmpc_init_nest_lock().

◆ KMP_GTID_DNE

#define KMP_GTID_DNE   (-2)

Definition at line 34 of file kmp_lock.h.

◆ kmp_lf_critical_section

#define kmp_lf_critical_section   1

Definition at line 70 of file kmp_lock.h.

Referenced by __kmp_get_critical_section_ptr().

◆ KMP_LOCK_ACQUIRED_FIRST

◆ KMP_LOCK_ACQUIRED_NEXT

◆ KMP_LOCK_BUSY

#define KMP_LOCK_BUSY ( v,
type )
Value:
(v)

Definition at line 1283 of file kmp_lock.h.

Referenced by __kmp_acquire_tas_lock_timed_template(), and __kmp_test_tas_lock().

◆ KMP_LOCK_FREE

#define KMP_LOCK_FREE ( type)

◆ KMP_LOCK_INIT

#define KMP_LOCK_INIT ( lock)
Value:
kmp_ticket_lock_t kmp_lock_t
Definition kmp_lock.h:555

Definition at line 557 of file kmp_lock.h.

Referenced by KMP_LOCK_INIT().

◆ KMP_LOCK_RELEASED

◆ KMP_LOCK_STILL_HELD

◆ KMP_LOCK_STRIP

#define KMP_LOCK_STRIP ( v)
Value:
(v)

Definition at line 1285 of file kmp_lock.h.

Referenced by __kmp_acquire_tas_lock_timed_template(), and __kmp_get_tas_lock_owner().

◆ KMP_PAD

#define KMP_PAD ( type,
sz )
Value:
(sizeof(type) + (sz - ((sizeof(type) - 1) % (sz)) - 1))
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type

Definition at line 32 of file kmp_lock.h.

◆ KMP_TAS_LOCK_INITIALIZER

#define KMP_TAS_LOCK_INITIALIZER ( lock)
Value:
{ \
{ KMP_LOCK_FREE(tas), 0 } \
}
#define KMP_LOCK_FREE(type)
Definition kmp_lock.h:1284

Definition at line 147 of file kmp_lock.h.

◆ KMP_TICKET_LOCK_INITIALIZER

#define KMP_TICKET_LOCK_INITIALIZER ( lock)
Value:
{ \
{ true, &(lock), NULL, 0U, 0U, 0, -1 } \
}

Definition at line 285 of file kmp_lock.h.

◆ KMP_USE_FUTEX

#define KMP_USE_FUTEX
Value:
#define KMP_OS_LINUX
#define KMP_ARCH_X86_64
#define KMP_ARCH_AARCH64
#define KMP_ARCH_X86

Definition at line 169 of file kmp_lock.h.

◆ OMP_CRITICAL_SIZE

#define OMP_CRITICAL_SIZE   sizeof(void *)

Definition at line 64 of file kmp_lock.h.

Referenced by __kmpc_critical(), and __kmpc_end_critical().

◆ OMP_LOCK_T_SIZE

◆ OMP_NEST_LOCK_T_SIZE

#define OMP_NEST_LOCK_T_SIZE   sizeof(void *)

Typedef Documentation

◆ kmp_base_drdpa_lock_t

Definition at line 483 of file kmp_lock.h.

◆ kmp_base_queuing_lock_t

Definition at line 384 of file kmp_lock.h.

◆ kmp_base_tas_lock_t

Definition at line 135 of file kmp_lock.h.

◆ kmp_base_ticket_lock_t

typedef struct kmp_base_ticket_lock kmp_base_ticket_lock_t

Definition at line 270 of file kmp_lock.h.

◆ kmp_block_of_locks_t

Definition at line 976 of file kmp_lock.h.

◆ kmp_bootstrap_lock_t

Definition at line 521 of file kmp_lock.h.

◆ kmp_drdpa_lock_t

Definition at line 493 of file kmp_lock.h.

◆ kmp_lock_flags_t

Definition at line 68 of file kmp_lock.h.

◆ kmp_lock_index_t

Definition at line 73 of file kmp_lock.h.

◆ kmp_lock_kind_t

Definition at line 605 of file kmp_lock.h.

◆ kmp_lock_pool_t

Definition at line 82 of file kmp_lock.h.

◆ kmp_lock_t

Definition at line 555 of file kmp_lock.h.

◆ kmp_lock_table_t

Definition at line 966 of file kmp_lock.h.

◆ kmp_queuing_lock_t

Definition at line 396 of file kmp_lock.h.

◆ kmp_tas_lock_t

Definition at line 143 of file kmp_lock.h.

◆ kmp_ticket_lock_t

Definition at line 280 of file kmp_lock.h.

◆ kmp_user_lock_p

Definition at line 623 of file kmp_lock.h.

Enumeration Type Documentation

◆ kmp_lock_kind

Enumerator
lk_default 
lk_tas 
lk_ticket 
lk_queuing 
lk_drdpa 

Definition at line 586 of file kmp_lock.h.

Function Documentation

◆ __kmp_acquire_bootstrap_lock()

◆ __kmp_acquire_drdpa_lock()

int __kmp_acquire_drdpa_lock ( kmp_drdpa_lock_t * lck,
kmp_int32 gtid )
extern

Definition at line 2345 of file kmp_lock.cpp.

References __kmp_acquire_drdpa_lock_timed_template(), and lck.

Referenced by __kmp_acquire_drdpa_lock_with_checks().

◆ __kmp_acquire_lock()

◆ __kmp_acquire_nested_drdpa_lock()

◆ __kmp_acquire_nested_queuing_lock()

◆ __kmp_acquire_nested_tas_lock()

◆ __kmp_acquire_nested_ticket_lock()

◆ __kmp_acquire_nested_user_lock_with_checks()

void __kmp_acquire_nested_user_lock_with_checks ( kmp_user_lock_p lck,
kmp_int32 gtid,
int * depth )
inlinestatic

Definition at line 789 of file kmp_lock.h.

References __kmp_acquire_nested_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

◆ __kmp_acquire_queuing_lock()

int __kmp_acquire_queuing_lock ( kmp_queuing_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_acquire_tas_lock()

int __kmp_acquire_tas_lock ( kmp_tas_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_acquire_ticket_lock()

int __kmp_acquire_ticket_lock ( kmp_ticket_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_acquire_user_lock_with_checks()

int __kmp_acquire_user_lock_with_checks ( kmp_user_lock_p lck,
kmp_int32 gtid )
inlinestatic

◆ __kmp_cleanup_user_locks()

◆ __kmp_destroy_bootstrap_lock()

void __kmp_destroy_bootstrap_lock ( kmp_bootstrap_lock_t * lck)
inlinestatic

Definition at line 543 of file kmp_lock.h.

References __kmp_destroy_ticket_lock(), and lck.

◆ __kmp_destroy_drdpa_lock()

void __kmp_destroy_drdpa_lock ( kmp_drdpa_lock_t * lck)
extern

◆ __kmp_destroy_lock()

void __kmp_destroy_lock ( kmp_lock_t * lck)
inlinestatic

◆ __kmp_destroy_nested_drdpa_lock()

void __kmp_destroy_nested_drdpa_lock ( kmp_drdpa_lock_t * lck)
extern

Definition at line 2596 of file kmp_lock.cpp.

References __kmp_destroy_drdpa_lock(), and lck.

Referenced by __kmp_destroy_nested_drdpa_lock_with_checks().

◆ __kmp_destroy_nested_queuing_lock()

void __kmp_destroy_nested_queuing_lock ( kmp_queuing_lock_t * lck)
extern

Definition at line 1646 of file kmp_lock.cpp.

References __kmp_destroy_queuing_lock(), and lck.

Referenced by __kmp_destroy_nested_queuing_lock_with_checks().

◆ __kmp_destroy_nested_tas_lock()

void __kmp_destroy_nested_tas_lock ( kmp_tas_lock_t * lck)
extern

Definition at line 285 of file kmp_lock.cpp.

References __kmp_destroy_tas_lock(), and lck.

Referenced by __kmp_destroy_nested_tas_lock_with_checks().

◆ __kmp_destroy_nested_ticket_lock()

void __kmp_destroy_nested_ticket_lock ( kmp_ticket_lock_t * lck)
extern

Definition at line 913 of file kmp_lock.cpp.

References __kmp_destroy_ticket_lock(), and lck.

Referenced by __kmp_destroy_nested_ticket_lock_with_checks().

◆ __kmp_destroy_nested_user_lock_with_checks()

void __kmp_destroy_nested_user_lock_with_checks ( kmp_user_lock_p lck)
inlinestatic

Definition at line 857 of file kmp_lock.h.

References __kmp_destroy_nested_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

◆ __kmp_destroy_queuing_lock()

void __kmp_destroy_queuing_lock ( kmp_queuing_lock_t * lck)
extern

◆ __kmp_destroy_tas_lock()

void __kmp_destroy_tas_lock ( kmp_tas_lock_t * lck)
extern

◆ __kmp_destroy_ticket_lock()

◆ __kmp_destroy_user_lock()

void __kmp_destroy_user_lock ( kmp_user_lock_p lck)
inlinestatic

Definition at line 735 of file kmp_lock.h.

References __kmp_destroy_user_lock_, KMP_DEBUG_ASSERT, and lck.

Referenced by __kmp_cleanup_user_locks().

◆ __kmp_destroy_user_lock_with_checks()

void __kmp_destroy_user_lock_with_checks ( kmp_user_lock_p lck)
inlinestatic

Definition at line 742 of file kmp_lock.h.

References __kmp_destroy_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

Referenced by __kmp_get_critical_section_ptr().

◆ __kmp_get_user_lock_location()

const ident_t * __kmp_get_user_lock_location ( kmp_user_lock_p lck)
inlinestatic

Definition at line 881 of file kmp_lock.h.

References __kmp_get_user_lock_location_, and lck.

Referenced by __kmp_cleanup_user_locks().

◆ __kmp_get_user_lock_owner()

kmp_int32 __kmp_get_user_lock_owner ( kmp_user_lock_p lck)
inlinestatic

Definition at line 632 of file kmp_lock.h.

References __kmp_get_user_lock_owner_, KMP_DEBUG_ASSERT, and lck.

Referenced by __kmp_check_sync().

◆ __kmp_init_bootstrap_lock()

void __kmp_init_bootstrap_lock ( kmp_bootstrap_lock_t * lck)
inlinestatic

◆ __kmp_init_drdpa_lock()

void __kmp_init_drdpa_lock ( kmp_drdpa_lock_t * lck)
extern

Definition at line 2448 of file kmp_lock.cpp.

References __kmp_allocate, KA_TRACE, and lck.

Referenced by __kmp_init_drdpa_lock_with_checks(), and __kmp_init_nested_drdpa_lock().

◆ __kmp_init_lock()

◆ __kmp_init_nested_drdpa_lock()

void __kmp_init_nested_drdpa_lock ( kmp_drdpa_lock_t * lck)
extern

Definition at line 2591 of file kmp_lock.cpp.

References __kmp_init_drdpa_lock(), and lck.

Referenced by __kmp_init_nested_drdpa_lock_with_checks().

◆ __kmp_init_nested_queuing_lock()

void __kmp_init_nested_queuing_lock ( kmp_queuing_lock_t * lck)
extern

Definition at line 1641 of file kmp_lock.cpp.

References __kmp_init_queuing_lock(), and lck.

Referenced by __kmp_init_nested_queuing_lock_with_checks().

◆ __kmp_init_nested_tas_lock()

void __kmp_init_nested_tas_lock ( kmp_tas_lock_t * lck)
extern

Definition at line 280 of file kmp_lock.cpp.

References __kmp_init_tas_lock(), and lck.

Referenced by __kmp_init_nested_tas_lock_with_checks().

◆ __kmp_init_nested_ticket_lock()

void __kmp_init_nested_ticket_lock ( kmp_ticket_lock_t * lck)
extern

Definition at line 906 of file kmp_lock.cpp.

References __kmp_init_ticket_lock(), and lck.

Referenced by __kmp_init_nested_ticket_lock_with_checks().

◆ __kmp_init_nested_user_lock_with_checks()

void __kmp_init_nested_user_lock_with_checks ( kmp_user_lock_p lck)
inlinestatic

Definition at line 849 of file kmp_lock.h.

References __kmp_init_nested_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

◆ __kmp_init_queuing_lock()

void __kmp_init_queuing_lock ( kmp_queuing_lock_t * lck)
extern

◆ __kmp_init_tas_lock()

void __kmp_init_tas_lock ( kmp_tas_lock_t * lck)
extern

◆ __kmp_init_ticket_lock()

void __kmp_init_ticket_lock ( kmp_ticket_lock_t * lck)
extern

◆ __kmp_init_user_lock_with_checks()

void __kmp_init_user_lock_with_checks ( kmp_user_lock_p lck)
inlinestatic

Definition at line 726 of file kmp_lock.h.

References __kmp_init_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

Referenced by __kmp_get_critical_section_ptr().

◆ __kmp_lookup_user_lock()

◆ __kmp_release_bootstrap_lock()

◆ __kmp_release_drdpa_lock()

int __kmp_release_drdpa_lock ( kmp_drdpa_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_release_lock()

◆ __kmp_release_nested_drdpa_lock()

int __kmp_release_nested_drdpa_lock ( kmp_drdpa_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_release_nested_queuing_lock()

int __kmp_release_nested_queuing_lock ( kmp_queuing_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_release_nested_tas_lock()

int __kmp_release_nested_tas_lock ( kmp_tas_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_release_nested_ticket_lock()

int __kmp_release_nested_ticket_lock ( kmp_ticket_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_release_nested_user_lock_with_checks()

int __kmp_release_nested_user_lock_with_checks ( kmp_user_lock_p lck,
kmp_int32 gtid )
inlinestatic

Definition at line 840 of file kmp_lock.h.

References __kmp_release_nested_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

◆ __kmp_release_queuing_lock()

◆ __kmp_release_tas_lock()

◆ __kmp_release_ticket_lock()

int __kmp_release_ticket_lock ( kmp_ticket_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_release_user_lock_with_checks()

void __kmp_release_user_lock_with_checks ( kmp_user_lock_p lck,
kmp_int32 gtid )
inlinestatic

◆ __kmp_set_user_lock_flags()

void __kmp_set_user_lock_flags ( kmp_user_lock_p lck,
kmp_lock_flags_t flags )
inlinestatic

Definition at line 904 of file kmp_lock.h.

References __kmp_set_user_lock_flags_, kmp_base_queuing_lock::flags, and lck.

Referenced by __kmp_user_lock_allocate().

◆ __kmp_set_user_lock_location()

void __kmp_set_user_lock_location ( kmp_user_lock_p lck,
const ident_t * loc )
inlinestatic

◆ __kmp_set_user_lock_vptrs()

◆ __kmp_spin_backoff()

◆ __kmp_test_bootstrap_lock()

int __kmp_test_bootstrap_lock ( kmp_bootstrap_lock_t * lck)
inlinestatic

Definition at line 531 of file kmp_lock.h.

References __kmp_test_ticket_lock(), KMP_GTID_DNE, and lck.

◆ __kmp_test_drdpa_lock()

int __kmp_test_drdpa_lock ( kmp_drdpa_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_test_lock()

int __kmp_test_lock ( kmp_lock_t * lck,
kmp_int32 gtid )
inlinestatic

Definition at line 563 of file kmp_lock.h.

References __kmp_test_ticket_lock(), and lck.

Referenced by __kmp_task_is_allowed().

◆ __kmp_test_nested_drdpa_lock()

int __kmp_test_nested_drdpa_lock ( kmp_drdpa_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_test_nested_queuing_lock()

int __kmp_test_nested_queuing_lock ( kmp_queuing_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_test_nested_tas_lock()

int __kmp_test_nested_tas_lock ( kmp_tas_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_test_nested_ticket_lock()

int __kmp_test_nested_ticket_lock ( kmp_ticket_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_test_nested_user_lock_with_checks()

int __kmp_test_nested_user_lock_with_checks ( kmp_user_lock_p lck,
kmp_int32 gtid )
inlinestatic

Definition at line 829 of file kmp_lock.h.

References __kmp_test_nested_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

◆ __kmp_test_queuing_lock()

◆ __kmp_test_tas_lock()

◆ __kmp_test_ticket_lock()

int __kmp_test_ticket_lock ( kmp_ticket_lock_t * lck,
kmp_int32 gtid )
extern

◆ __kmp_test_ticket_lock_with_cheks()

int __kmp_test_ticket_lock_with_cheks ( kmp_ticket_lock_t * lck,
kmp_int32 gtid )
extern

References kmp_uint32, and lck.

◆ __kmp_test_user_lock_with_checks()

int __kmp_test_user_lock_with_checks ( kmp_user_lock_p lck,
kmp_int32 gtid )
inlinestatic

Definition at line 708 of file kmp_lock.h.

References __kmp_test_user_lock_with_checks_, KMP_DEBUG_ASSERT, and lck.

◆ __kmp_user_lock_allocate()

◆ __kmp_user_lock_free()

◆ __kmp_validate_locks()

void __kmp_validate_locks ( void )
extern

Definition at line 43 of file kmp_lock.cpp.

References i, KMP_ASSERT, and kmp_uint32.

Referenced by __kmp_do_serial_initialize().

◆ KMP_BUILD_ASSERT()

KMP_BUILD_ASSERT ( offsetof(kmp_base_queuing_lock_t, tail_id) % 8 = =0)

References KMP_BUILD_ASSERT.

Variable Documentation

◆ __kmp_acquire_nested_user_lock_with_checks_

int(* __kmp_acquire_nested_user_lock_with_checks_) (kmp_user_lock_p lck, kmp_int32 gtid) ( kmp_user_lock_p lck,
kmp_int32 gtid )
extern

Definition at line 3552 of file kmp_lock.cpp.

Referenced by __kmp_acquire_nested_user_lock_with_checks().

◆ __kmp_acquire_user_lock_with_checks_

int(* __kmp_acquire_user_lock_with_checks_) (kmp_user_lock_p lck, kmp_int32 gtid) ( kmp_user_lock_p lck,
kmp_int32 gtid )
extern

Definition at line 3542 of file kmp_lock.cpp.

Referenced by __kmp_acquire_user_lock_with_checks().

◆ __kmp_base_user_lock_size

size_t __kmp_base_user_lock_size
extern

◆ __kmp_destroy_nested_user_lock_with_checks_

void(* __kmp_destroy_nested_user_lock_with_checks_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3560 of file kmp_lock.cpp.

Referenced by __kmp_destroy_nested_user_lock_with_checks().

◆ __kmp_destroy_user_lock_

void(* __kmp_destroy_user_lock_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3550 of file kmp_lock.cpp.

Referenced by __kmp_destroy_user_lock(), and __kmp_set_user_lock_vptrs().

◆ __kmp_destroy_user_lock_with_checks_

void(* __kmp_destroy_user_lock_with_checks_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3551 of file kmp_lock.cpp.

Referenced by __kmp_destroy_user_lock_with_checks().

◆ __kmp_get_user_lock_flags_

kmp_lock_flags_t(* __kmp_get_user_lock_flags_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3566 of file kmp_lock.cpp.

Referenced by __kmp_set_user_lock_vptrs().

◆ __kmp_get_user_lock_location_

const ident_t *(* __kmp_get_user_lock_location_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3563 of file kmp_lock.cpp.

Referenced by __kmp_get_user_lock_location(), and __kmp_set_user_lock_vptrs().

◆ __kmp_get_user_lock_owner_

kmp_int32(* __kmp_get_user_lock_owner_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3541 of file kmp_lock.cpp.

Referenced by __kmp_get_user_lock_owner(), and __kmp_set_user_lock_vptrs().

◆ __kmp_init_nested_user_lock_with_checks_

void(* __kmp_init_nested_user_lock_with_checks_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3559 of file kmp_lock.cpp.

Referenced by __kmp_init_nested_user_lock_with_checks().

◆ __kmp_init_user_lock_with_checks_

void(* __kmp_init_user_lock_with_checks_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3549 of file kmp_lock.cpp.

Referenced by __kmp_init_user_lock_with_checks().

◆ __kmp_is_user_lock_initialized_

int(* __kmp_is_user_lock_initialized_) (kmp_user_lock_p lck) ( kmp_user_lock_p lck)
extern

Definition at line 3562 of file kmp_lock.cpp.

Referenced by __kmp_cleanup_user_locks(), and __kmp_set_user_lock_vptrs().

◆ __kmp_lock_blocks

kmp_block_of_locks_t* __kmp_lock_blocks
extern

◆ __kmp_lock_pool

kmp_user_lock_p __kmp_lock_pool
extern

◆ __kmp_num_locks_in_block

int __kmp_num_locks_in_block
extern

◆ __kmp_release_nested_user_lock_with_checks_

int(* __kmp_release_nested_user_lock_with_checks_) (kmp_user_lock_p lck, kmp_int32 gtid) ( kmp_user_lock_p lck,
kmp_int32 gtid )
extern

Definition at line 3557 of file kmp_lock.cpp.

Referenced by __kmp_release_nested_user_lock_with_checks().

◆ __kmp_release_user_lock_with_checks_

int(* __kmp_release_user_lock_with_checks_) (kmp_user_lock_p lck, kmp_int32 gtid) ( kmp_user_lock_p lck,
kmp_int32 gtid )
extern

Definition at line 3547 of file kmp_lock.cpp.

Referenced by __kmp_release_user_lock_with_checks().

◆ __kmp_set_user_lock_flags_

void(* __kmp_set_user_lock_flags_) (kmp_user_lock_p lck, kmp_lock_flags_t flags) ( kmp_user_lock_p lck,
kmp_lock_flags_t flags )
extern

Definition at line 3567 of file kmp_lock.cpp.

Referenced by __kmp_set_user_lock_flags(), and __kmp_set_user_lock_vptrs().

◆ __kmp_set_user_lock_location_

void(* __kmp_set_user_lock_location_) (kmp_user_lock_p lck, const ident_t *loc) ( kmp_user_lock_p lck,
const ident_t * loc )
extern

Definition at line 3564 of file kmp_lock.cpp.

Referenced by __kmp_set_user_lock_location(), and __kmp_set_user_lock_vptrs().

◆ __kmp_spin_backoff_params

◆ __kmp_test_nested_user_lock_with_checks_

int(* __kmp_test_nested_user_lock_with_checks_) (kmp_user_lock_p lck, kmp_int32 gtid) ( kmp_user_lock_p lck,
kmp_int32 gtid )
extern

Definition at line 3555 of file kmp_lock.cpp.

Referenced by __kmp_test_nested_user_lock_with_checks().

◆ __kmp_test_user_lock_with_checks_

int(* __kmp_test_user_lock_with_checks_) (kmp_user_lock_p lck, kmp_int32 gtid) ( kmp_user_lock_p lck,
kmp_int32 gtid )
extern

Definition at line 3545 of file kmp_lock.cpp.

Referenced by __kmp_test_user_lock_with_checks().

◆ __kmp_user_lock_kind

◆ __kmp_user_lock_size

size_t __kmp_user_lock_size
extern

◆ __kmp_user_lock_table