LLVM OpenMP 19.0.0git
Classes | Macros | Typedefs | Enumerations | Functions | Variables
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)    (sizeof(type) + (sz - ((sizeof(type) - 1) % (sz)) - 1))
 
#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)   KMP_TICKET_LOCK_INITIALIZER((lock))
 
#define KMP_BOOTSTRAP_LOCK_INIT(lock)    kmp_bootstrap_lock_t lock = KMP_TICKET_LOCK_INITIALIZER(lock)
 
#define KMP_LOCK_INIT(lock)   kmp_lock_t lock = KMP_TICKET_LOCK_INITIALIZER(lock)
 
#define KMP_BIND_USER_LOCK_TEMPLATE(nest, kind, suffix)
 
#define KMP_BIND_USER_LOCK(kind)   KMP_BIND_USER_LOCK_TEMPLATE(_, kind, lock)
 
#define KMP_BIND_USER_LOCK_WITH_CHECKS(kind)    KMP_BIND_USER_LOCK_TEMPLATE(_, kind, lock_with_checks)
 
#define KMP_BIND_NESTED_USER_LOCK(kind)    KMP_BIND_USER_LOCK_TEMPLATE(_nested_, kind, lock)
 
#define KMP_BIND_NESTED_USER_LOCK_WITH_CHECKS(kind)    KMP_BIND_USER_LOCK_TEMPLATE(_nested_, kind, lock_with_checks)
 
#define KMP_CHECK_USER_LOCK_INIT()
 
#define KMP_LOCK_BUSY(v, type)   (v)
 
#define KMP_LOCK_FREE(type)   0
 
#define KMP_LOCK_STRIP(v)   (v)
 

Typedefs

typedef struct ident ident_t
 
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.

◆ KMP_BIND_NESTED_USER_LOCK

#define KMP_BIND_NESTED_USER_LOCK (   kind)     KMP_BIND_USER_LOCK_TEMPLATE(_nested_, kind, lock)

Definition at line 932 of file kmp_lock.h.

◆ KMP_BIND_NESTED_USER_LOCK_WITH_CHECKS

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

Definition at line 934 of file kmp_lock.h.

◆ KMP_BIND_USER_LOCK

#define KMP_BIND_USER_LOCK (   kind)    KMP_BIND_USER_LOCK_TEMPLATE(_, kind, lock)

Definition at line 929 of file kmp_lock.h.

◆ 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)     KMP_BIND_USER_LOCK_TEMPLATE(_, kind, lock_with_checks)

Definition at line 930 of file kmp_lock.h.

◆ KMP_BOOTSTRAP_LOCK_INIT

#define KMP_BOOTSTRAP_LOCK_INIT (   lock)     kmp_bootstrap_lock_t lock = KMP_TICKET_LOCK_INITIALIZER(lock)

Definition at line 524 of file kmp_lock.h.

◆ KMP_BOOTSTRAP_LOCK_INITIALIZER

#define KMP_BOOTSTRAP_LOCK_INITIALIZER (   lock)    KMP_TICKET_LOCK_INITIALIZER((lock))

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
Definition: kmp_global.cpp:57
kmp_bootstrap_lock_t __kmp_initz_lock
#define TRUE
Definition: kmp.h:1324
#define TCR_4(a)
Definition: kmp_os.h:1135

Definition at line 990 of file kmp_lock.h.

◆ 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.

◆ KMP_LOCK_ACQUIRED_FIRST

#define KMP_LOCK_ACQUIRED_FIRST   1

Definition at line 166 of file kmp_lock.h.

◆ KMP_LOCK_ACQUIRED_NEXT

#define KMP_LOCK_ACQUIRED_NEXT   0

Definition at line 167 of file kmp_lock.h.

◆ KMP_LOCK_BUSY

#define KMP_LOCK_BUSY (   v,
  type 
)    (v)

Definition at line 1283 of file kmp_lock.h.

◆ KMP_LOCK_FREE

#define KMP_LOCK_FREE (   type)    0

Definition at line 1284 of file kmp_lock.h.

◆ KMP_LOCK_INIT

#define KMP_LOCK_INIT (   lock)    kmp_lock_t lock = KMP_TICKET_LOCK_INITIALIZER(lock)

Definition at line 557 of file kmp_lock.h.

◆ KMP_LOCK_RELEASED

#define KMP_LOCK_RELEASED   1

Definition at line 164 of file kmp_lock.h.

◆ KMP_LOCK_STILL_HELD

#define KMP_LOCK_STILL_HELD   0

Definition at line 165 of file kmp_lock.h.

◆ KMP_LOCK_STRIP

#define KMP_LOCK_STRIP (   v)    (v)

Definition at line 1285 of file kmp_lock.h.

◆ KMP_PAD

#define KMP_PAD (   type,
  sz 
)     (sizeof(type) + (sz - ((sizeof(type) - 1) % (sz)) - 1))

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 } \
}
static kmp_bootstrap_lock_t lock
Definition: kmp_i18n.cpp:57

Definition at line 285 of file kmp_lock.h.

◆ KMP_USE_FUTEX

#define KMP_USE_FUTEX
Value:
#define KMP_OS_LINUX
Definition: kmp_platform.h:18
#define KMP_ARCH_X86_64
Definition: kmp_platform.h:106
#define KMP_ARCH_AARCH64
Definition: kmp_platform.h:107
#define KMP_ARCH_X86
Definition: kmp_platform.h:105

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.

◆ OMP_LOCK_T_SIZE

#define OMP_LOCK_T_SIZE   sizeof(void *)

Definition at line 57 of file kmp_lock.h.

◆ OMP_NEST_LOCK_T_SIZE

#define OMP_NEST_LOCK_T_SIZE   sizeof(void *)

Definition at line 58 of file kmp_lock.h.

Typedef Documentation

◆ ident_t

typedef struct ident ident_t

Definition at line 39 of file kmp_lock.h.

◆ 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()

static int __kmp_acquire_bootstrap_lock ( kmp_bootstrap_lock_t lck)
inlinestatic

◆ __kmp_acquire_drdpa_lock()

int __kmp_acquire_drdpa_lock ( kmp_drdpa_lock_t lck,
kmp_int32  gtid 
)

Definition at line 2352 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()

static int __kmp_acquire_lock ( kmp_lock_t lck,
kmp_int32  gtid 
)
inlinestatic

◆ __kmp_acquire_nested_drdpa_lock()

int __kmp_acquire_nested_drdpa_lock ( kmp_drdpa_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_acquire_nested_queuing_lock()

int __kmp_acquire_nested_queuing_lock ( kmp_queuing_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_acquire_nested_tas_lock()

int __kmp_acquire_nested_tas_lock ( kmp_tas_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_acquire_nested_ticket_lock()

int __kmp_acquire_nested_ticket_lock ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_acquire_nested_user_lock_with_checks()

static 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 
)

Definition at line 1277 of file kmp_lock.cpp.

References KMP_DEBUG_ASSERT, and lck.

Referenced by __kmp_acquire_atomic_lock(), and __kmp_acquire_queuing_lock_with_checks().

◆ __kmp_acquire_tas_lock()

int __kmp_acquire_tas_lock ( kmp_tas_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_acquire_ticket_lock()

int __kmp_acquire_ticket_lock ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_acquire_user_lock_with_checks()

static int __kmp_acquire_user_lock_with_checks ( kmp_user_lock_p  lck,
kmp_int32  gtid 
)
inlinestatic

◆ __kmp_cleanup_user_locks()

void __kmp_cleanup_user_locks ( )

◆ __kmp_destroy_bootstrap_lock()

static 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)

◆ __kmp_destroy_lock()

static void __kmp_destroy_lock ( kmp_lock_t lck)
inlinestatic

Definition at line 575 of file kmp_lock.h.

References __kmp_destroy_ticket_lock(), and lck.

Referenced by __kmp_dephash_free_entries(), and __kmp_dispatch_next().

◆ __kmp_destroy_nested_drdpa_lock()

void __kmp_destroy_nested_drdpa_lock ( kmp_drdpa_lock_t lck)

Definition at line 2603 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)

Definition at line 1653 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)

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)

Definition at line 920 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()

static 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)

◆ __kmp_destroy_tas_lock()

void __kmp_destroy_tas_lock ( kmp_tas_lock_t lck)

◆ __kmp_destroy_ticket_lock()

void __kmp_destroy_ticket_lock ( kmp_ticket_lock_t lck)

◆ __kmp_destroy_user_lock()

static 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()

static 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()

static 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()

static 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()

static 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)

Definition at line 2455 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()

static void __kmp_init_lock ( kmp_lock_t lck)
inlinestatic

◆ __kmp_init_nested_drdpa_lock()

void __kmp_init_nested_drdpa_lock ( kmp_drdpa_lock_t lck)

Definition at line 2598 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)

Definition at line 1648 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)

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)

Definition at line 913 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()

static 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)

◆ __kmp_init_tas_lock()

void __kmp_init_tas_lock ( kmp_tas_lock_t lck)

◆ __kmp_init_ticket_lock()

void __kmp_init_ticket_lock ( kmp_ticket_lock_t lck)

◆ __kmp_init_user_lock_with_checks()

static 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_user_lock_p __kmp_lookup_user_lock ( void **  user_lock,
char const *  func 
)

◆ __kmp_release_bootstrap_lock()

static void __kmp_release_bootstrap_lock ( kmp_bootstrap_lock_t lck)
inlinestatic

◆ __kmp_release_drdpa_lock()

int __kmp_release_drdpa_lock ( kmp_drdpa_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_lock()

static void __kmp_release_lock ( kmp_lock_t lck,
kmp_int32  gtid 
)
inlinestatic

◆ __kmp_release_nested_drdpa_lock()

int __kmp_release_nested_drdpa_lock ( kmp_drdpa_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_nested_queuing_lock()

int __kmp_release_nested_queuing_lock ( kmp_queuing_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_nested_tas_lock()

int __kmp_release_nested_tas_lock ( kmp_tas_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_nested_ticket_lock()

int __kmp_release_nested_ticket_lock ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_nested_user_lock_with_checks()

static 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()

int __kmp_release_queuing_lock ( kmp_queuing_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_tas_lock()

int __kmp_release_tas_lock ( kmp_tas_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_ticket_lock()

int __kmp_release_ticket_lock ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_release_user_lock_with_checks()

static void __kmp_release_user_lock_with_checks ( kmp_user_lock_p  lck,
kmp_int32  gtid 
)
inlinestatic

◆ __kmp_set_user_lock_flags()

static 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()

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

◆ __kmp_set_user_lock_vptrs()

void __kmp_set_user_lock_vptrs ( kmp_lock_kind_t  user_lock_kind)

◆ __kmp_spin_backoff()

void __kmp_spin_backoff ( kmp_backoff_t boff)

◆ __kmp_test_bootstrap_lock()

static 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 
)

◆ __kmp_test_lock()

static 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 
)

◆ __kmp_test_nested_queuing_lock()

int __kmp_test_nested_queuing_lock ( kmp_queuing_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_nested_tas_lock()

int __kmp_test_nested_tas_lock ( kmp_tas_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_nested_ticket_lock()

int __kmp_test_nested_ticket_lock ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_nested_user_lock_with_checks()

static 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()

int __kmp_test_queuing_lock ( kmp_queuing_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_tas_lock()

int __kmp_test_tas_lock ( kmp_tas_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_ticket_lock()

int __kmp_test_ticket_lock ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_ticket_lock_with_cheks()

int __kmp_test_ticket_lock_with_cheks ( kmp_ticket_lock_t lck,
kmp_int32  gtid 
)

◆ __kmp_test_user_lock_with_checks()

static 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_p __kmp_user_lock_allocate ( void **  user_lock,
kmp_int32  gtid,
kmp_lock_flags_t  flags 
)

◆ __kmp_user_lock_free()

void __kmp_user_lock_free ( void **  user_lock,
kmp_int32  gtid,
kmp_user_lock_p  lck 
)

◆ __kmp_validate_locks()

void __kmp_validate_locks ( void  )

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)

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 3556 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 3546 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 3564 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 3554 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 3555 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 3570 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 3567 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 3545 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 3563 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 3553 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 3566 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 3561 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 3551 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 3571 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 3568 of file kmp_lock.cpp.

Referenced by __kmp_set_user_lock_location(), and __kmp_set_user_lock_vptrs().

◆ __kmp_spin_backoff_params

kmp_backoff_t __kmp_spin_backoff_params
extern

◆ __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 3559 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 3549 of file kmp_lock.cpp.

Referenced by __kmp_test_user_lock_with_checks().

◆ __kmp_user_lock_kind

kmp_lock_kind_t __kmp_user_lock_kind
extern

◆ __kmp_user_lock_size

size_t __kmp_user_lock_size
extern

◆ __kmp_user_lock_table

kmp_lock_table_t __kmp_user_lock_table
extern