LLVM OpenMP* Runtime Library
kmp_global.cpp
1 /*
2  * kmp_global.cpp -- KPTS global variables for runtime support library
3  */
4 
5 //===----------------------------------------------------------------------===//
6 //
7 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
8 // See https://llvm.org/LICENSE.txt for license information.
9 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #include "kmp.h"
14 #include "kmp_affinity.h"
15 #if KMP_USE_HIER_SCHED
16 #include "kmp_dispatch_hier.h"
17 #endif
18 
19 kmp_key_t __kmp_gtid_threadprivate_key;
20 
21 #if KMP_ARCH_X86 || KMP_ARCH_X86_64
22 kmp_cpuinfo_t __kmp_cpuinfo = {0}; // Not initialized
23 #endif
24 
25 #if KMP_STATS_ENABLED
26 #include "kmp_stats.h"
27 // lock for modifying the global __kmp_stats_list
28 kmp_tas_lock_t __kmp_stats_lock;
29 
30 // global list of per thread stats, the head is a sentinel node which
31 // accumulates all stats produced before __kmp_create_worker is called.
32 kmp_stats_list *__kmp_stats_list;
33 
34 // thread local pointer to stats node within list
35 KMP_THREAD_LOCAL kmp_stats_list *__kmp_stats_thread_ptr = NULL;
36 
37 // gives reference tick for all events (considered the 0 tick)
38 tsc_tick_count __kmp_stats_start_time;
39 #endif
40 
41 /* ----------------------------------------------------- */
42 /* INITIALIZATION VARIABLES */
43 /* they are syncronized to write during init, but read anytime */
44 volatile int __kmp_init_serial = FALSE;
45 volatile int __kmp_init_gtid = FALSE;
46 volatile int __kmp_init_common = FALSE;
47 volatile int __kmp_init_middle = FALSE;
48 volatile int __kmp_init_parallel = FALSE;
49 #if KMP_USE_MONITOR
50 volatile int __kmp_init_monitor =
51  0; /* 1 - launched, 2 - actually started (Windows* OS only) */
52