LLVM OpenMP 19.0.0git
Macros | Typedefs | Enumerations | Functions
kmp_os.h File Reference
#include "kmp_config.h"
#include <atomic>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "kmp_safe_c_api.h"

Go to the source code of this file.

Macros

#define KMP_FTN_PLAIN   1
 
#define KMP_FTN_APPEND   2
 
#define KMP_FTN_UPPER   3
 
#define KMP_PTR_SKIP   (sizeof(void *))
 
#define KMP_OFF   0
 
#define KMP_ON   1
 
#define KMP_MEM_CONS_VOLATILE   0
 
#define KMP_MEM_CONS_FENCE   1
 
#define KMP_MEM_CONS_MODEL   KMP_MEM_CONS_VOLATILE
 
#define __has_cpp_attribute(x)   0
 
#define __has_attribute(x)   0
 
#define KMP_COMPILER_ICC   0
 
#define KMP_COMPILER_GCC   0
 
#define KMP_COMPILER_CLANG   0
 
#define KMP_COMPILER_MSVC   0
 
#define KMP_COMPILER_ICX   0
 
#define KMP_AFFINITY_SUPPORTED   0
 
#define KMP_GROUP_AFFINITY   0
 
#define KMP_HAVE_SCHED_GETCPU   0
 
#define KMP_HAVE_QUAD   0
 
#define KMP_USE_X87CONTROL   0
 
#define KMP_SIZE_T_MAX   (0xFFFFFFFFFFFFFFFF)
 
#define KMP_INTPTR   1
 
#define KMP_INTPTR_SPEC   "ld"
 
#define KMP_UINTPTR_SPEC   "lu"
 
#define KMP_INT_MAX   ((kmp_int32)0x7FFFFFFF)
 
#define KMP_INT_MIN   ((kmp_int32)0x80000000)
 
#define kmp_va_deref(ap)   (ap)
 
#define kmp_va_addr_of(ap)   (ap)
 
#define CCAST(type, var)   (type)(var)
 
#define RCAST(type, var)   (type)(var)
 
#define KMP_EXPORT   extern /* export declaration in guide libraries */
 
#define KMP_HAVE_MWAIT
 
#define KMP_HAVE_UMWAIT
 
#define KMP_GET_PAGE_SIZE()   getpagesize()
 
#define PAGE_ALIGNED(_addr)    (!((size_t)_addr & (size_t)(KMP_GET_PAGE_SIZE() - 1)))
 
#define ALIGN_TO_PAGE(x)    (void *)(((size_t)(x)) & ~((size_t)(KMP_GET_PAGE_SIZE() - 1)))
 
#define INTERNODE_CACHE_LINE   4096 /* for multi-node systems */
 
#define CACHE_LINE   128 /* cache line size in bytes */
 
#define KMP_CACHE_PREFETCH(ADDR)   /* nothing */
 
#define KMP_FALLTHROUGH()   ((void)0)
 
#define KMP_ATTRIBUTE_TARGET_WAITPKG   /* Nothing */
 
#define KMP_ATTRIBUTE_TARGET_RTM   /* Nothing */
 
#define KMP_NORETURN   __attribute__((noreturn))
 
#define KMP_ALIGN(bytes)   __attribute__((aligned(bytes)))
 
#define KMP_THREAD_LOCAL   __thread
 
#define KMP_ALIAS(alias_of)   __attribute__((alias(alias_of)))
 
#define KMP_WEAK_ATTRIBUTE_EXTERNAL   /* Nothing */
 
#define KMP_WEAK_ATTRIBUTE_INTERNAL   /* Nothing */
 
#define KMP_STR(x)   _KMP_STR(x)
 
#define _KMP_STR(x)   #x
 
#define KMP_EXPAND_NAME(api_name)   api_name
 
#define KMP_VERSION_SYMBOL(api_name, ver_num, ver_str)   /* Nothing */
 
#define KMP_VERSION_OMPC_SYMBOL(apic_name, api_name, ver_num, ver_str)   /* Nothing */
 
#define KMP_DO_ALIGN(bytes)   KMP_ALIGN(bytes)
 
#define KMP_ALIGN_CACHE   KMP_ALIGN(CACHE_LINE)
 
#define KMP_ALIGN_CACHE_INTERNODE   KMP_ALIGN(INTERNODE_CACHE_LINE)
 
#define KMP_TEST_THEN_INC32(p)    __sync_fetch_and_add((volatile kmp_int32 *)(p), 1)
 
#define KMP_TEST_THEN_INC_ACQ32(p)    __sync_fetch_and_add((volatile kmp_int32 *)(p), 1)
 
#define KMP_TEST_THEN_INC64(p)    __sync_fetch_and_add((volatile kmp_int64 *)(p), 1LL)
 
#define KMP_TEST_THEN_INC_ACQ64(p)    __sync_fetch_and_add((volatile kmp_int64 *)(p), 1LL)
 
#define KMP_TEST_THEN_ADD4_32(p)    __sync_fetch_and_add((volatile kmp_int32 *)(p), 4)
 
#define KMP_TEST_THEN_ADD4_ACQ32(p)    __sync_fetch_and_add((volatile kmp_int32 *)(p), 4)
 
#define KMP_TEST_THEN_ADD4_64(p)    __sync_fetch_and_add((volatile kmp_int64 *)(p), 4LL)
 
#define KMP_TEST_THEN_ADD4_ACQ64(p)    __sync_fetch_and_add((volatile kmp_int64 *)(p), 4LL)
 
#define KMP_TEST_THEN_DEC64(p)    __sync_fetch_and_sub((volatile kmp_int64 *)(p), 1LL)
 
#define KMP_TEST_THEN_DEC_ACQ64(p)    __sync_fetch_and_sub((volatile kmp_int64 *)(p), 1LL)
 
#define KMP_TEST_THEN_DEC32(p)    __sync_fetch_and_sub((volatile kmp_int32 *)(p), 1)
 
#define KMP_TEST_THEN_DEC_ACQ32(p)    __sync_fetch_and_sub((volatile kmp_int32 *)(p), 1)
 
#define KMP_TEST_THEN_ADD8(p, v)    __sync_fetch_and_add((volatile kmp_int8 *)(p), (kmp_int8)(v))
 
#define KMP_TEST_THEN_ADD32(p, v)    __sync_fetch_and_add((volatile kmp_int32 *)(p), (kmp_int32)(v))
 
#define KMP_TEST_THEN_ADD64(p, v)    __sync_fetch_and_add((volatile kmp_int64 *)(p), (kmp_int64)(v))
 
#define KMP_TEST_THEN_OR8(p, v)    __sync_fetch_and_or((volatile kmp_int8 *)(p), (kmp_int8)(v))
 
#define KMP_TEST_THEN_AND8(p, v)    __sync_fetch_and_and((volatile kmp_int8 *)(p), (kmp_int8)(v))
 
#define KMP_TEST_THEN_OR32(p, v)    __sync_fetch_and_or((volatile kmp_uint32 *)(p), (kmp_uint32)(v))
 
#define KMP_TEST_THEN_AND32(p, v)    __sync_fetch_and_and((volatile kmp_uint32 *)(p), (kmp_uint32)(v))
 
#define KMP_TEST_THEN_OR64(p, v)    __sync_fetch_and_or((volatile kmp_uint64 *)(p), (kmp_uint64)(v))
 
#define KMP_TEST_THEN_AND64(p, v)    __sync_fetch_and_and((volatile kmp_uint64 *)(p), (kmp_uint64)(v))
 
#define KMP_COMPARE_AND_STORE_ACQ8(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_REL8(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_ACQ16(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_REL16(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_ACQ32(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_REL32(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_PTR(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_RET8(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_RET16(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_RET32(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_ACQ64(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_REL64(p, cv, sv)
 
#define KMP_COMPARE_AND_STORE_RET64(p, cv, sv)
 
#define KMP_XCHG_FIXED8(p, v)    __sync_lock_test_and_set((volatile kmp_uint8 *)(p), (kmp_uint8)(v))
 
#define KMP_XCHG_FIXED16(p, v)    __sync_lock_test_and_set((volatile kmp_uint16 *)(p), (kmp_uint16)(v))
 
#define KMP_XCHG_FIXED32(p, v)    __sync_lock_test_and_set((volatile kmp_uint32 *)(p), (kmp_uint32)(v))
 
#define KMP_XCHG_FIXED64(p, v)    __sync_lock_test_and_set((volatile kmp_uint64 *)(p), (kmp_uint64)(v))
 
#define KMP_MB()   /* nothing to do */
 
#define KMP_MFENCE()   KMP_MB()
 
#define KMP_SFENCE()   KMP_MB()
 
#define KMP_IMB()   /* nothing to do */
 
#define KMP_ST_REL32(A, D)   (*(A) = (D))
 
#define KMP_ST_REL64(A, D)   (*(A) = (D))
 
#define KMP_LD_ACQ32(A)   (*(A))
 
#define KMP_LD_ACQ64(A)   (*(A))
 
#define TCR_1(a)   (a)
 
#define TCW_1(a, b)   (a) = (b)
 
#define TCR_4(a)   (a)
 
#define TCW_4(a, b)   (a) = (b)
 
#define TCI_4(a)   (++(a))
 
#define TCD_4(a)   (--(a))
 
#define TCR_8(a)   (a)
 
#define TCW_8(a, b)   (a) = (b)
 
#define TCI_8(a)   (++(a))
 
#define TCD_8(a)   (--(a))
 
#define TCR_SYNC_4(a)   (a)
 
#define TCW_SYNC_4(a, b)   (a) = (b)
 
#define TCX_SYNC_4(a, b, c)
 
#define TCR_SYNC_8(a)   (a)
 
#define TCW_SYNC_8(a, b)   (a) = (b)
 
#define TCX_SYNC_8(a, b, c)
 
#define TCR_PTR(a)   ((void *)TCR_8(a))
 
#define TCW_PTR(a, b)   TCW_8((a), (b))
 
#define TCR_SYNC_PTR(a)   ((void *)TCR_SYNC_8(a))
 
#define TCW_SYNC_PTR(a, b)   TCW_SYNC_8((a), (b))
 
#define TCX_SYNC_PTR(a, b, c)   ((void *)TCX_SYNC_8((a), (b), (c)))
 
#define FTN_TRUE   TRUE
 
#define FTN_FALSE   FALSE
 
#define VOLATILE_CAST(x)   (x)
 
#define KMP_WAIT   __kmp_wait_4
 
#define KMP_WAIT_PTR   __kmp_wait_4_ptr
 
#define KMP_EQ   __kmp_eq_4
 
#define KMP_NEQ   __kmp_neq_4
 
#define KMP_LT   __kmp_lt_4
 
#define KMP_GE   __kmp_ge_4
 
#define KMP_LE   __kmp_le_4
 
#define STATIC_EFI2_WORKAROUND   static
 
#define KMP_USE_BGET   1
 
#define USE_CMPXCHG_FIX   1
 
#define KMP_USE_DYNAMIC_LOCK   1
 
#define KMP_ATOMIC_LD(p, order)   (p)->load(std::memory_order_##order)
 
#define KMP_ATOMIC_OP(op, p, v, order)   (p)->op(v, std::memory_order_##order)
 
#define KMP_ATOMIC_LD_ACQ(p)   KMP_ATOMIC_LD(p, acquire)
 
#define KMP_ATOMIC_LD_RLX(p)   KMP_ATOMIC_LD(p, relaxed)
 
#define KMP_ATOMIC_ST_REL(p, v)   KMP_ATOMIC_OP(store, p, v, release)
 
#define KMP_ATOMIC_ST_RLX(p, v)   KMP_ATOMIC_OP(store, p, v, relaxed)
 
#define KMP_ATOMIC_ADD(p, v)   KMP_ATOMIC_OP(fetch_add, p, v, acq_rel)
 
#define KMP_ATOMIC_SUB(p, v)   KMP_ATOMIC_OP(fetch_sub, p, v, acq_rel)
 
#define KMP_ATOMIC_AND(p, v)   KMP_ATOMIC_OP(fetch_and, p, v, acq_rel)
 
#define KMP_ATOMIC_OR(p, v)   KMP_ATOMIC_OP(fetch_or, p, v, acq_rel)
 
#define KMP_ATOMIC_INC(p)   KMP_ATOMIC_OP(fetch_add, p, 1, acq_rel)
 
#define KMP_ATOMIC_DEC(p)   KMP_ATOMIC_OP(fetch_sub, p, 1, acq_rel)
 
#define KMP_ATOMIC_ADD_RLX(p, v)   KMP_ATOMIC_OP(fetch_add, p, v, relaxed)
 
#define KMP_ATOMIC_INC_RLX(p)   KMP_ATOMIC_OP(fetch_add, p, 1, relaxed)
 
#define KMP_DLSYM(name)   dlsym(RTLD_DEFAULT, name)
 
#define KMP_DLSYM_NEXT(name)   dlsym(RTLD_NEXT, name)
 
#define __has_builtin(x)   0
 
#define KMP_BUILTIN_UNREACHABLE
 

Typedefs

typedef size_t kmp_size_t
 
typedef long kmp_intptr_t
 
typedef unsigned long kmp_uintptr_t
 
typedef kmp_int32 kmp_int
 
typedef kmp_uint32 kmp_uint
 
typedef va_list kmp_va_list
 
typedef void(* microtask_t) (int *gtid, int *npr,...)
 
typedef float kmp_real32
 
typedef double kmp_real64
 

Enumerations

enum  kmp_mem_fence_type { kmp_no_fence , kmp_acquire_fence , kmp_release_fence , kmp_full_fence }
 
enum  kmp_warnings_level { kmp_warnings_off = 0 , kmp_warnings_low , kmp_warnings_explicit = 6 , kmp_warnings_verbose }
 

Functions

kmp_real32 KMP_XCHG_REAL32 (volatile kmp_real32 *p, kmp_real32 v)
 
kmp_real64 KMP_XCHG_REAL64 (volatile kmp_real64 *p, kmp_real64 v)
 
template<typename T >
bool __kmp_atomic_compare_store (std::atomic< T > *p, T expected, T desired)
 
template<typename T >
bool __kmp_atomic_compare_store_acq (std::atomic< T > *p, T expected, T desired)
 
template<typename T >
bool __kmp_atomic_compare_store_rel (std::atomic< T > *p, T expected, T desired)
 

Macro Definition Documentation

◆ __has_attribute

#define __has_attribute (   x)    0

Definition at line 49 of file kmp_os.h.

◆ __has_builtin

#define __has_builtin (   x)    0

Definition at line 1306 of file kmp_os.h.

◆ __has_cpp_attribute

#define __has_cpp_attribute (   x)    0

Definition at line 45 of file kmp_os.h.

◆ _KMP_STR

#define _KMP_STR (   x)    #x

Definition at line 412 of file kmp_os.h.

◆ ALIGN_TO_PAGE

#define ALIGN_TO_PAGE (   x)     (void *)(((size_t)(x)) & ~((size_t)(KMP_GET_PAGE_SIZE() - 1)))

Definition at line 326 of file kmp_os.h.

◆ CACHE_LINE

#define CACHE_LINE   128 /* cache line size in bytes */

Definition at line 339 of file kmp_os.h.

◆ CCAST

#define CCAST (   type,
  var 
)    (type)(var)

Definition at line 290 of file kmp_os.h.

◆ FTN_FALSE

#define FTN_FALSE   FALSE

Definition at line 1180 of file kmp_os.h.

◆ FTN_TRUE

#define FTN_TRUE   TRUE

Definition at line 1176 of file kmp_os.h.

◆ INTERNODE_CACHE_LINE

#define INTERNODE_CACHE_LINE   4096 /* for multi-node systems */

Definition at line 335 of file kmp_os.h.

◆ KMP_AFFINITY_SUPPORTED

#define KMP_AFFINITY_SUPPORTED   0

Definition at line 88 of file kmp_os.h.

◆ KMP_ALIAS

#define KMP_ALIAS (   alias_of)    __attribute__((alias(alias_of)))

Definition at line 394 of file kmp_os.h.

◆ KMP_ALIGN

#define KMP_ALIGN (   bytes)    __attribute__((aligned(bytes)))

Definition at line 392 of file kmp_os.h.

◆ KMP_ALIGN_CACHE

#define KMP_ALIGN_CACHE   KMP_ALIGN(CACHE_LINE)

Definition at line 453 of file kmp_os.h.

◆ KMP_ALIGN_CACHE_INTERNODE

#define KMP_ALIGN_CACHE_INTERNODE   KMP_ALIGN(INTERNODE_CACHE_LINE)

Definition at line 454 of file kmp_os.h.

◆ KMP_ATOMIC_ADD

#define KMP_ATOMIC_ADD (   p,
 
)    KMP_ATOMIC_OP(fetch_add, p, v, acq_rel)

Definition at line 1263 of file kmp_os.h.

◆ KMP_ATOMIC_ADD_RLX

#define KMP_ATOMIC_ADD_RLX (   p,
 
)    KMP_ATOMIC_OP(fetch_add, p, v, relaxed)

Definition at line 1269 of file kmp_os.h.

◆ KMP_ATOMIC_AND

#define KMP_ATOMIC_AND (   p,
 
)    KMP_ATOMIC_OP(fetch_and, p, v, acq_rel)

Definition at line 1265 of file kmp_os.h.

◆ KMP_ATOMIC_DEC

#define KMP_ATOMIC_DEC (   p)    KMP_ATOMIC_OP(fetch_sub, p, 1, acq_rel)

Definition at line 1268 of file kmp_os.h.

◆ KMP_ATOMIC_INC

#define KMP_ATOMIC_INC (   p)    KMP_ATOMIC_OP(fetch_add, p, 1, acq_rel)

Definition at line 1267 of file kmp_os.h.

◆ KMP_ATOMIC_INC_RLX

#define KMP_ATOMIC_INC_RLX (   p)    KMP_ATOMIC_OP(fetch_add, p, 1, relaxed)

Definition at line 1270 of file kmp_os.h.

◆ KMP_ATOMIC_LD

#define KMP_ATOMIC_LD (   p,
  order 
)    (p)->load(std::memory_order_##order)

Definition at line 1253 of file kmp_os.h.

◆ KMP_ATOMIC_LD_ACQ

#define KMP_ATOMIC_LD_ACQ (   p)    KMP_ATOMIC_LD(p, acquire)

Definition at line 1257 of file kmp_os.h.

◆ KMP_ATOMIC_LD_RLX

#define KMP_ATOMIC_LD_RLX (   p)    KMP_ATOMIC_LD(p, relaxed)

Definition at line 1258 of file kmp_os.h.

◆ KMP_ATOMIC_OP

#define KMP_ATOMIC_OP (   op,
  p,
  v,
  order 
)    (p)->op(v, std::memory_order_##order)

Definition at line 1254 of file kmp_os.h.

◆ KMP_ATOMIC_OR

#define KMP_ATOMIC_OR (   p,
 
)    KMP_ATOMIC_OP(fetch_or, p, v, acq_rel)

Definition at line 1266 of file kmp_os.h.

◆ KMP_ATOMIC_ST_REL

#define KMP_ATOMIC_ST_REL (   p,
 
)    KMP_ATOMIC_OP(store, p, v, release)

Definition at line 1259 of file kmp_os.h.

◆ KMP_ATOMIC_ST_RLX

#define KMP_ATOMIC_ST_RLX (   p,
 
)    KMP_ATOMIC_OP(store, p, v, relaxed)

Definition at line 1260 of file kmp_os.h.

◆ KMP_ATOMIC_SUB

#define KMP_ATOMIC_SUB (   p,
 
)    KMP_ATOMIC_OP(fetch_sub, p, v, acq_rel)

Definition at line 1264 of file kmp_os.h.

◆ KMP_ATTRIBUTE_TARGET_RTM

#define KMP_ATTRIBUTE_TARGET_RTM   /* Nothing */

Definition at line 375 of file kmp_os.h.

◆ KMP_ATTRIBUTE_TARGET_WAITPKG

#define KMP_ATTRIBUTE_TARGET_WAITPKG   /* Nothing */

Definition at line 369 of file kmp_os.h.

◆ KMP_BUILTIN_UNREACHABLE

#define KMP_BUILTIN_UNREACHABLE

Definition at line 1315 of file kmp_os.h.

◆ KMP_CACHE_PREFETCH

#define KMP_CACHE_PREFETCH (   ADDR)    /* nothing */

Definition at line 347 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_ACQ16

#define KMP_COMPARE_AND_STORE_ACQ16 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint16 *)(p), (kmp_uint16)(cv), \
(kmp_uint16)(sv))
void const char const char int ITT_FORMAT __itt_group_sync p

Definition at line 807 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_ACQ32

#define KMP_COMPARE_AND_STORE_ACQ32 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint32 *)(p), (kmp_uint32)(cv), \
(kmp_uint32)(sv))

Definition at line 813 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_ACQ64

#define KMP_COMPARE_AND_STORE_ACQ64 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint64 *)(p), (kmp_uint64)(cv), \
(kmp_uint64)(sv))
unsigned long long kmp_uint64

Definition at line 856 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_ACQ8

#define KMP_COMPARE_AND_STORE_ACQ8 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint8 *)(p), (kmp_uint8)(cv), \
(kmp_uint8)(sv))
uint8_t kmp_uint8

Definition at line 801 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_PTR

#define KMP_COMPARE_AND_STORE_PTR (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((void *volatile *)(p), (void *)(cv), \
(void *)(sv))

Definition at line 819 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_REL16

#define KMP_COMPARE_AND_STORE_REL16 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint16 *)(p), (kmp_uint16)(cv), \
(kmp_uint16)(sv))

Definition at line 810 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_REL32

#define KMP_COMPARE_AND_STORE_REL32 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint32 *)(p), (kmp_uint32)(cv), \
(kmp_uint32)(sv))

Definition at line 816 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_REL64

#define KMP_COMPARE_AND_STORE_REL64 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint64 *)(p), (kmp_uint64)(cv), \
(kmp_uint64)(sv))

Definition at line 859 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_REL8

#define KMP_COMPARE_AND_STORE_REL8 (   p,
  cv,
  sv 
)
Value:
__sync_bool_compare_and_swap((volatile kmp_uint8 *)(p), (kmp_uint8)(cv), \
(kmp_uint8)(sv))

Definition at line 804 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_RET16

#define KMP_COMPARE_AND_STORE_RET16 (   p,
  cv,
  sv 
)
Value:
__sync_val_compare_and_swap((volatile kmp_uint16 *)(p), (kmp_uint16)(cv), \
(kmp_uint16)(sv))

Definition at line 826 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_RET32

#define KMP_COMPARE_AND_STORE_RET32 (   p,
  cv,
  sv 
)
Value:
__sync_val_compare_and_swap((volatile kmp_uint32 *)(p), (kmp_uint32)(cv), \
(kmp_uint32)(sv))

Definition at line 829 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_RET64

#define KMP_COMPARE_AND_STORE_RET64 (   p,
  cv,
  sv 
)
Value:
__sync_val_compare_and_swap((volatile kmp_uint64 *)(p), (kmp_uint64)(cv), \
(kmp_uint64)(sv))

Definition at line 862 of file kmp_os.h.

◆ KMP_COMPARE_AND_STORE_RET8

#define KMP_COMPARE_AND_STORE_RET8 (   p,
  cv,
  sv 
)
Value:
__sync_val_compare_and_swap((volatile kmp_uint8 *)(p), (kmp_uint8)(cv), \
(kmp_uint8)(sv))

Definition at line 823 of file kmp_os.h.

◆ KMP_COMPILER_CLANG

#define KMP_COMPILER_CLANG   0

Definition at line 55 of file kmp_os.h.

◆ KMP_COMPILER_GCC

#define KMP_COMPILER_GCC   0

Definition at line 54 of file kmp_os.h.

◆ KMP_COMPILER_ICC

#define KMP_COMPILER_ICC   0

Definition at line 53 of file kmp_os.h.

◆ KMP_COMPILER_ICX

#define KMP_COMPILER_ICX   0

Definition at line 57 of file kmp_os.h.

◆ KMP_COMPILER_MSVC

#define KMP_COMPILER_MSVC   0

Definition at line 56 of file kmp_os.h.

◆ KMP_DLSYM

#define KMP_DLSYM (   name)    dlsym(RTLD_DEFAULT, name)

Definition at line 1300 of file kmp_os.h.

◆ KMP_DLSYM_NEXT

#define KMP_DLSYM_NEXT (   name)    dlsym(RTLD_NEXT, name)

Definition at line 1301 of file kmp_os.h.

◆ KMP_DO_ALIGN

#define KMP_DO_ALIGN (   bytes)    KMP_ALIGN(bytes)

Definition at line 452 of file kmp_os.h.

◆ KMP_EQ

#define KMP_EQ   __kmp_eq_4

Definition at line 1193 of file kmp_os.h.

◆ KMP_EXPAND_NAME

#define KMP_EXPAND_NAME (   api_name)    api_name

Definition at line 444 of file kmp_os.h.

◆ KMP_EXPORT

#define KMP_EXPORT   extern /* export declaration in guide libraries */

Definition at line 294 of file kmp_os.h.

◆ KMP_FALLTHROUGH

#define KMP_FALLTHROUGH ( )    ((void)0)

Definition at line 363 of file kmp_os.h.

◆ KMP_FTN_APPEND

#define KMP_FTN_APPEND   2

Definition at line 23 of file kmp_os.h.

◆ KMP_FTN_PLAIN

#define KMP_FTN_PLAIN   1

Definition at line 22 of file kmp_os.h.

◆ KMP_FTN_UPPER

#define KMP_FTN_UPPER   3

Definition at line 24 of file kmp_os.h.

◆ KMP_GE

#define KMP_GE   __kmp_ge_4

Definition at line 1196 of file kmp_os.h.

◆ KMP_GET_PAGE_SIZE

#define KMP_GET_PAGE_SIZE ( )    getpagesize()

Definition at line 321 of file kmp_os.h.

◆ KMP_GROUP_AFFINITY

#define KMP_GROUP_AFFINITY   0

Definition at line 89 of file kmp_os.h.

◆ KMP_HAVE_MWAIT

#define KMP_HAVE_MWAIT
Value:
#define KMP_OS_LINUX
Definition: kmp_platform.h:18
#define KMP_OS_WINDOWS
Definition: kmp_platform.h:24
#define KMP_ARCH_X86_64
Definition: kmp_platform.h:106
#define KMP_ARCH_X86
Definition: kmp_platform.h:105
#define KMP_MIC2
Definition: kmp_platform.h:245

Definition at line 303 of file kmp_os.h.

◆ KMP_HAVE_QUAD

#define KMP_HAVE_QUAD   0

Definition at line 99 of file kmp_os.h.

◆ KMP_HAVE_SCHED_GETCPU

#define KMP_HAVE_SCHED_GETCPU   0

Definition at line 95 of file kmp_os.h.

◆ KMP_HAVE_UMWAIT

#define KMP_HAVE_UMWAIT
Value:

Definition at line 306 of file kmp_os.h.

◆ KMP_IMB

#define KMP_IMB ( )    /* nothing to do */

Definition at line 1102 of file kmp_os.h.

◆ KMP_INT_MAX

#define KMP_INT_MAX   ((kmp_int32)0x7FFFFFFF)

Definition at line 217 of file kmp_os.h.

◆ KMP_INT_MIN

#define KMP_INT_MIN   ((kmp_int32)0x80000000)

Definition at line 218 of file kmp_os.h.

◆ KMP_INTPTR

#define KMP_INTPTR   1

Definition at line 203 of file kmp_os.h.

◆ KMP_INTPTR_SPEC

#define KMP_INTPTR_SPEC   "ld"

Definition at line 206 of file kmp_os.h.

◆ KMP_LD_ACQ32

#define KMP_LD_ACQ32 (   A)    (*(A))

Definition at line 1114 of file kmp_os.h.

◆ KMP_LD_ACQ64

#define KMP_LD_ACQ64 (   A)    (*(A))

Definition at line 1118 of file kmp_os.h.

◆ KMP_LE

#define KMP_LE   __kmp_le_4

Definition at line 1197 of file kmp_os.h.

◆ KMP_LT

#define KMP_LT   __kmp_lt_4

Definition at line 1195 of file kmp_os.h.

◆ KMP_MB

#define KMP_MB ( )    /* nothing to do */

Definition at line 1064 of file kmp_os.h.

◆ KMP_MEM_CONS_FENCE

#define KMP_MEM_CONS_FENCE   1

Definition at line 38 of file kmp_os.h.

◆ KMP_MEM_CONS_MODEL

#define KMP_MEM_CONS_MODEL   KMP_MEM_CONS_VOLATILE

Definition at line 41 of file kmp_os.h.

◆ KMP_MEM_CONS_VOLATILE

#define KMP_MEM_CONS_VOLATILE   0

Definition at line 37 of file kmp_os.h.

◆ KMP_MFENCE

#define KMP_MFENCE ( )    KMP_MB()

Definition at line 1097 of file kmp_os.h.

◆ KMP_NEQ

#define KMP_NEQ   __kmp_neq_4

Definition at line 1194 of file kmp_os.h.

◆ KMP_NORETURN

#define KMP_NORETURN   __attribute__((noreturn))

Definition at line 384 of file kmp_os.h.

◆ KMP_OFF

#define KMP_OFF   0

Definition at line 34 of file kmp_os.h.

◆ KMP_ON

#define KMP_ON   1

Definition at line 35 of file kmp_os.h.

◆ KMP_PTR_SKIP

#define KMP_PTR_SKIP   (sizeof(void *))

Definition at line 30 of file kmp_os.h.

◆ KMP_SFENCE

#define KMP_SFENCE ( )    KMP_MB()

Definition at line 1098 of file kmp_os.h.

◆ KMP_SIZE_T_MAX

#define KMP_SIZE_T_MAX   (0xFFFFFFFFFFFFFFFF)

Definition at line 195 of file kmp_os.h.

◆ KMP_ST_REL32

#define KMP_ST_REL32 (   A,
 
)    (*(A) = (D))

Definition at line 1106 of file kmp_os.h.

◆ KMP_ST_REL64

#define KMP_ST_REL64 (   A,
 
)    (*(A) = (D))

Definition at line 1110 of file kmp_os.h.

◆ KMP_STR

#define KMP_STR (   x)    _KMP_STR(x)

Definition at line 411 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD32

#define KMP_TEST_THEN_ADD32 (   p,
 
)     __sync_fetch_and_add((volatile kmp_int32 *)(p), (kmp_int32)(v))

Definition at line 768 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD4_32

#define KMP_TEST_THEN_ADD4_32 (   p)     __sync_fetch_and_add((volatile kmp_int32 *)(p), 4)

Definition at line 739 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD4_64

#define KMP_TEST_THEN_ADD4_64 (   p)     __sync_fetch_and_add((volatile kmp_int64 *)(p), 4LL)

Definition at line 753 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD4_ACQ32

#define KMP_TEST_THEN_ADD4_ACQ32 (   p)     __sync_fetch_and_add((volatile kmp_int32 *)(p), 4)

Definition at line 741 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD4_ACQ64

#define KMP_TEST_THEN_ADD4_ACQ64 (   p)     __sync_fetch_and_add((volatile kmp_int64 *)(p), 4LL)

Definition at line 755 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD64

#define KMP_TEST_THEN_ADD64 (   p,
 
)     __sync_fetch_and_add((volatile kmp_int64 *)(p), (kmp_int64)(v))

Definition at line 775 of file kmp_os.h.

◆ KMP_TEST_THEN_ADD8

#define KMP_TEST_THEN_ADD8 (   p,
 
)     __sync_fetch_and_add((volatile kmp_int8 *)(p), (kmp_int8)(v))

Definition at line 766 of file kmp_os.h.

◆ KMP_TEST_THEN_AND32

#define KMP_TEST_THEN_AND32 (   p,
 
)     __sync_fetch_and_and((volatile kmp_uint32 *)(p), (kmp_uint32)(v))

Definition at line 785 of file kmp_os.h.

◆ KMP_TEST_THEN_AND64

#define KMP_TEST_THEN_AND64 (   p,
 
)     __sync_fetch_and_and((volatile kmp_uint64 *)(p), (kmp_uint64)(v))

Definition at line 797 of file kmp_os.h.

◆ KMP_TEST_THEN_AND8

#define KMP_TEST_THEN_AND8 (   p,
 
)     __sync_fetch_and_and((volatile kmp_int8 *)(p), (kmp_int8)(v))

Definition at line 781 of file kmp_os.h.

◆ KMP_TEST_THEN_DEC32

#define KMP_TEST_THEN_DEC32 (   p)     __sync_fetch_and_sub((volatile kmp_int32 *)(p), 1)

Definition at line 762 of file kmp_os.h.

◆ KMP_TEST_THEN_DEC64

#define KMP_TEST_THEN_DEC64 (   p)     __sync_fetch_and_sub((volatile kmp_int64 *)(p), 1LL)

Definition at line 757 of file kmp_os.h.

◆ KMP_TEST_THEN_DEC_ACQ32

#define KMP_TEST_THEN_DEC_ACQ32 (   p)     __sync_fetch_and_sub((volatile kmp_int32 *)(p), 1)

Definition at line 764 of file kmp_os.h.

◆ KMP_TEST_THEN_DEC_ACQ64

#define KMP_TEST_THEN_DEC_ACQ64 (   p)     __sync_fetch_and_sub((volatile kmp_int64 *)(p), 1LL)

Definition at line 759 of file kmp_os.h.

◆ KMP_TEST_THEN_INC32

#define KMP_TEST_THEN_INC32 (   p)     __sync_fetch_and_add((volatile kmp_int32 *)(p), 1)

Definition at line 724 of file kmp_os.h.

◆ KMP_TEST_THEN_INC64

#define KMP_TEST_THEN_INC64 (   p)     __sync_fetch_and_add((volatile kmp_int64 *)(p), 1LL)

Definition at line 734 of file kmp_os.h.

◆ KMP_TEST_THEN_INC_ACQ32

#define KMP_TEST_THEN_INC_ACQ32 (   p)     __sync_fetch_and_add((volatile kmp_int32 *)(p), 1)

Definition at line 726 of file kmp_os.h.

◆ KMP_TEST_THEN_INC_ACQ64

#define KMP_TEST_THEN_INC_ACQ64 (   p)     __sync_fetch_and_add((volatile kmp_int64 *)(p), 1LL)

Definition at line 736 of file kmp_os.h.

◆ KMP_TEST_THEN_OR32

#define KMP_TEST_THEN_OR32 (   p,
 
)     __sync_fetch_and_or((volatile kmp_uint32 *)(p), (kmp_uint32)(v))

Definition at line 783 of file kmp_os.h.

◆ KMP_TEST_THEN_OR64

#define KMP_TEST_THEN_OR64 (   p,
 
)     __sync_fetch_and_or((volatile kmp_uint64 *)(p), (kmp_uint64)(v))

Definition at line 795 of file kmp_os.h.

◆ KMP_TEST_THEN_OR8

#define KMP_TEST_THEN_OR8 (   p,
 
)     __sync_fetch_and_or((volatile kmp_int8 *)(p), (kmp_int8)(v))

Definition at line 779 of file kmp_os.h.

◆ KMP_THREAD_LOCAL

#define KMP_THREAD_LOCAL   __thread

Definition at line 393 of file kmp_os.h.

◆ KMP_UINTPTR_SPEC

#define KMP_UINTPTR_SPEC   "lu"

Definition at line 207 of file kmp_os.h.

◆ KMP_USE_BGET

#define KMP_USE_BGET   1

Definition at line 1209 of file kmp_os.h.

◆ KMP_USE_DYNAMIC_LOCK

#define KMP_USE_DYNAMIC_LOCK   1

Definition at line 1218 of file kmp_os.h.

◆ KMP_USE_X87CONTROL

#define KMP_USE_X87CONTROL   0

Definition at line 128 of file kmp_os.h.

◆ kmp_va_addr_of

#define kmp_va_addr_of (   ap)    (ap)

Definition at line 229 of file kmp_os.h.

◆ kmp_va_deref

#define kmp_va_deref (   ap)    (ap)

Definition at line 228 of file kmp_os.h.

◆ KMP_VERSION_OMPC_SYMBOL

#define KMP_VERSION_OMPC_SYMBOL (   apic_name,
  api_name,
  ver_num,
  ver_str 
)    /* Nothing */

Definition at line 446 of file kmp_os.h.

◆ KMP_VERSION_SYMBOL

#define KMP_VERSION_SYMBOL (   api_name,
  ver_num,
  ver_str 
)    /* Nothing */

Definition at line 445 of file kmp_os.h.

◆ KMP_WAIT

#define KMP_WAIT   __kmp_wait_4

Definition at line 1191 of file kmp_os.h.

◆ KMP_WAIT_PTR

#define KMP_WAIT_PTR   __kmp_wait_4_ptr

Definition at line 1192 of file kmp_os.h.

◆ KMP_WEAK_ATTRIBUTE_EXTERNAL

#define KMP_WEAK_ATTRIBUTE_EXTERNAL   /* Nothing */

Definition at line 400 of file kmp_os.h.

◆ KMP_WEAK_ATTRIBUTE_INTERNAL

#define KMP_WEAK_ATTRIBUTE_INTERNAL   /* Nothing */

Definition at line 406 of file kmp_os.h.

◆ KMP_XCHG_FIXED16

#define KMP_XCHG_FIXED16 (   p,
 
)     __sync_lock_test_and_set((volatile kmp_uint16 *)(p), (kmp_uint16)(v))

Definition at line 875 of file kmp_os.h.

◆ KMP_XCHG_FIXED32

#define KMP_XCHG_FIXED32 (   p,
 
)     __sync_lock_test_and_set((volatile kmp_uint32 *)(p), (kmp_uint32)(v))

Definition at line 877 of file kmp_os.h.

◆ KMP_XCHG_FIXED64

#define KMP_XCHG_FIXED64 (   p,
 
)     __sync_lock_test_and_set((volatile kmp_uint64 *)(p), (kmp_uint64)(v))

Definition at line 879 of file kmp_os.h.

◆ KMP_XCHG_FIXED8

#define KMP_XCHG_FIXED8 (   p,
 
)     __sync_lock_test_and_set((volatile kmp_uint8 *)(p), (kmp_uint8)(v))

Definition at line 872 of file kmp_os.h.

◆ PAGE_ALIGNED

#define PAGE_ALIGNED (   _addr)     (!((size_t)_addr & (size_t)(KMP_GET_PAGE_SIZE() - 1)))

Definition at line 324 of file kmp_os.h.

◆ RCAST

#define RCAST (   type,
  var 
)    (type)(var)

Definition at line 291 of file kmp_os.h.

◆ STATIC_EFI2_WORKAROUND

#define STATIC_EFI2_WORKAROUND   static

Definition at line 1204 of file kmp_os.h.

◆ TCD_4

#define TCD_4 (   a)    (--(a))

Definition at line 1138 of file kmp_os.h.

◆ TCD_8

#define TCD_8 (   a)    (--(a))

Definition at line 1142 of file kmp_os.h.

◆ TCI_4

#define TCI_4 (   a)    (++(a))

Definition at line 1137 of file kmp_os.h.

◆ TCI_8

#define TCI_8 (   a)    (++(a))

Definition at line 1141 of file kmp_os.h.

◆ TCR_1

#define TCR_1 (   a)    (a)

Definition at line 1133 of file kmp_os.h.

◆ TCR_4

#define TCR_4 (   a)    (a)

Definition at line 1135 of file kmp_os.h.

◆ TCR_8

#define TCR_8 (   a)    (a)

Definition at line 1139 of file kmp_os.h.

◆ TCR_PTR

#define TCR_PTR (   a)    ((void *)TCR_8(a))

Definition at line 1164 of file kmp_os.h.

◆ TCR_SYNC_4

#define TCR_SYNC_4 (   a)    (a)

Definition at line 1143 of file kmp_os.h.

◆ TCR_SYNC_8

#define TCR_SYNC_8 (   a)    (a)

Definition at line 1148 of file kmp_os.h.

◆ TCR_SYNC_PTR

#define TCR_SYNC_PTR (   a)    ((void *)TCR_SYNC_8(a))

Definition at line 1166 of file kmp_os.h.

◆ TCW_1

#define TCW_1 (   a,
  b 
)    (a) = (b)

Definition at line 1134 of file kmp_os.h.

◆ TCW_4

#define TCW_4 (   a,
  b 
)    (a) = (b)

Definition at line 1136 of file kmp_os.h.

◆ TCW_8

#define TCW_8 (   a,
  b 
)    (a) = (b)

Definition at line 1140 of file kmp_os.h.

◆ TCW_PTR

#define TCW_PTR (   a,
  b 
)    TCW_8((a), (b))

Definition at line 1165 of file kmp_os.h.

◆ TCW_SYNC_4

#define TCW_SYNC_4 (   a,
  b 
)    (a) = (b)

Definition at line 1144 of file kmp_os.h.

◆ TCW_SYNC_8

#define TCW_SYNC_8 (   a,
  b 
)    (a) = (b)

Definition at line 1149 of file kmp_os.h.

◆ TCW_SYNC_PTR

#define TCW_SYNC_PTR (   a,
  b 
)    TCW_SYNC_8((a), (b))

Definition at line 1167 of file kmp_os.h.

◆ TCX_SYNC_4

#define TCX_SYNC_4 (   a,
  b,
 
)
Value:
KMP_COMPARE_AND_STORE_REL32((volatile kmp_int32 *)(volatile void *)&(a), \
(kmp_int32)(b), (kmp_int32)(c))
#define KMP_COMPARE_AND_STORE_REL32(p, cv, sv)
Definition: kmp_os.h:816
int a
int32_t kmp_int32

Definition at line 1145 of file kmp_os.h.

◆ TCX_SYNC_8

#define TCX_SYNC_8 (   a,
  b,
 
)
Value:
KMP_COMPARE_AND_STORE_REL64((volatile kmp_int64 *)(volatile void *)&(a), \
(kmp_int64)(b), (kmp_int64)(c))
int64_t kmp_int64
Definition: common.h:10
#define KMP_COMPARE_AND_STORE_REL64(p, cv, sv)
Definition: kmp_os.h:859

Definition at line 1150 of file kmp_os.h.

◆ TCX_SYNC_PTR

#define TCX_SYNC_PTR (   a,
  b,
 
)    ((void *)TCX_SYNC_8((a), (b), (c)))

Definition at line 1168 of file kmp_os.h.

◆ USE_CMPXCHG_FIX

#define USE_CMPXCHG_FIX   1

Definition at line 1214 of file kmp_os.h.

◆ VOLATILE_CAST

#define VOLATILE_CAST (   x)    (x)

Definition at line 1188 of file kmp_os.h.

Typedef Documentation

◆ kmp_int

typedef kmp_int32 kmp_int

Definition at line 214 of file kmp_os.h.

◆ kmp_intptr_t

typedef long kmp_intptr_t

Definition at line 204 of file kmp_os.h.

◆ kmp_real32

Definition at line 199 of file kmp_os.h.

◆ kmp_real64

Definition at line 200 of file kmp_os.h.

◆ kmp_size_t

typedef size_t kmp_size_t

Definition at line 198 of file kmp_os.h.

◆ kmp_uint

Definition at line 215 of file kmp_os.h.

◆ kmp_uintptr_t

typedef unsigned long kmp_uintptr_t

Definition at line 205 of file kmp_os.h.

◆ kmp_va_list

typedef va_list kmp_va_list

Definition at line 227 of file kmp_os.h.

◆ microtask_t

typedef void(* microtask_t) (int *gtid, int *npr,...)

Definition at line 1183 of file kmp_os.h.

Enumeration Type Documentation

◆ kmp_mem_fence_type

Enumerator
kmp_no_fence 
kmp_acquire_fence 
kmp_release_fence 
kmp_full_fence 

Definition at line 457 of file kmp_os.h.

◆ kmp_warnings_level

Enumerator
kmp_warnings_off 
kmp_warnings_low 
kmp_warnings_explicit 
kmp_warnings_verbose 

Definition at line 1238 of file kmp_os.h.

Function Documentation

◆ __kmp_atomic_compare_store()

template<typename T >
bool __kmp_atomic_compare_store ( std::atomic< T > *  p,
expected,
desired 
)

◆ __kmp_atomic_compare_store_acq()

template<typename T >
bool __kmp_atomic_compare_store_acq ( std::atomic< T > *  p,
expected,
desired 
)

◆ __kmp_atomic_compare_store_rel()

template<typename T >
bool __kmp_atomic_compare_store_rel ( std::atomic< T > *  p,
expected,
desired 
)

Definition at line 1286 of file kmp_os.h.

References p.

◆ KMP_XCHG_REAL32()

kmp_real32 KMP_XCHG_REAL32 ( volatile kmp_real32 p,
kmp_real32  v 
)
inline

Definition at line 882 of file kmp_os.h.

References p.

◆ KMP_XCHG_REAL64()

kmp_real64 KMP_XCHG_REAL64 ( volatile kmp_real64 p,
kmp_real64  v 
)
inline

Definition at line 893 of file kmp_os.h.

References p.