63 static bool ITT_Present;
64 static atomic<bool> ITT_InitializationDone;
67 #if !(_WIN32||_WIN64) || __TBB_SOURCE_DIRECTLY_INCLUDED
77 #if __TBB_OLD_PRIMES_RNG
81 static const unsigned Primes[] = {
82 0x9e3779b1, 0xffe6cc59, 0x2109f6dd, 0x43977ab5,
83 0xba5703f5, 0xb495a877, 0xe1626741, 0x79695e6b,
84 0xbc98c09f, 0xd5bee2b3, 0x287488f9, 0x3af18231,
85 0x9677cd4d, 0xbe3a6929, 0xadc6a877, 0xdcf0674b,
86 0xbe4d6fe9, 0x5f15e201, 0x99afc3fd, 0xf3f16801,
87 0xe222cfff, 0x24ba5fdb, 0x0620452d, 0x79f149e3,
88 0xc8b93f49, 0x972702cd, 0xb07dd827, 0x6c97d5ed,
89 0x085a3d61, 0x46eb5ea7, 0x3d9910ed, 0x2e687b5b,
90 0x29609227, 0x6eb081f1, 0x0954c4e1, 0x9d114db9,
91 0x542acfa9, 0xb3e6bd7b, 0x0742d917, 0xe9f3ffa7,
92 0x54581edb, 0xf2480f45, 0x0bb9288f, 0xef1affc7,
93 0x85fa0ca7, 0x3ccc14db, 0xe6baf34b, 0x343377f7,
94 0x5ca19031, 0xe6d9293b, 0xf0a9f391, 0x5d2e980b,
95 0xfc411073, 0xc3749363, 0xb892d829, 0x3549366b,
96 0x629750ad, 0xb98294e5, 0x892d9483, 0xc235baf3,
97 0x3d2402a3, 0x6bdef3c9, 0xbec333cd, 0x40c9520f
108 unsigned GetPrime (
unsigned seed ) {
109 return Primes[seed%(
sizeof(Primes)/
sizeof(Primes[0]))];
124 __TBB_ASSERT(k>=0,
"removed __TBB_InitOnce ref that was not added?");
145 struct resource_string {
147 __itt_string_handle *itt_str_handle;
153 #define TBB_STRING_RESOURCE( index_name, str ) { str, NULL },
154 static resource_string strings_for_itt[] = {
156 {
"num_resource_strings", NULL }
158 #undef TBB_STRING_RESOURCE
160 static __itt_string_handle *ITT_get_string_handle(
int idx) {
162 return (idx >= 0 && idx <
NUM_STRINGS) ? strings_for_itt[idx].itt_str_handle : NULL;
165 static void ITT_init_domains() {
174 static void ITT_init_strings() {
184 static void ITT_init() {
191 void ITT_DoUnsafeOneTimeInitialization () {
194 if ( !ITT_InitializationDone ) {
196 if (ITT_Present) ITT_init();
197 ITT_InitializationDone =
true;
205 void ITT_DoOneTimeInitialization() {
206 if ( !ITT_InitializationDone ) {
208 ITT_DoUnsafeOneTimeInitialization();
223 bool itt_present =
false;
225 ITT_DoUnsafeOneTimeInitialization();
226 itt_present = ITT_Present;
243 #if (_WIN32||_WIN64) && !__TBB_SOURCE_DIRECTLY_INCLUDED
245 extern "C" bool WINAPI DllMain( HANDLE , DWORD reason, LPVOID lpvReserved ) {
247 case DLL_PROCESS_ATTACH:
250 case DLL_PROCESS_DETACH:
253 if( lpvReserved==NULL )
263 case DLL_THREAD_DETACH:
278 ITT_NOTIFY(sync_acquired,
const_cast<void*
>(src));
287 case 2:
ITT_NOTIFY(sync_acquired, ptr);
break;
296 const __itt_id itt_null_id = {0, 0, 0};
299 if (tbb_domains[idx] == NULL) {
300 ITT_DoOneTimeInitialization();
302 return tbb_domains[idx];
305 static inline void itt_id_make(__itt_id *
id,
void*
addr,
unsigned long long extra) {
309 static inline void itt_id_create(
const __itt_domain *
domain, __itt_id
id) {
310 ITTNOTIFY_VOID_D1(id_create,
domain,
id);
315 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
316 __itt_id group_id = itt_null_id;
317 __itt_id parent_id = itt_null_id;
318 itt_id_make( &group_id, group, group_extra );
319 itt_id_create(
d, group_id );
321 itt_id_make( &parent_id,
parent, parent_extra );
323 __itt_string_handle *n = ITT_get_string_handle(name_index);
324 ITTNOTIFY_VOID_D3(task_group,
d, group_id, parent_id, n);
330 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
331 __itt_id
id = itt_null_id;
332 itt_id_make( &
id,
addr, addr_extra );
333 __itt_string_handle *k = ITT_get_string_handle(
key);
334 size_t value_length = strlen(
value );
336 ITTNOTIFY_VOID_D4(metadata_str_addA,
d,
id, k,
value, value_length);
338 ITTNOTIFY_VOID_D4(metadata_str_add,
d,
id, k,
value, value_length);
345 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
346 __itt_id
id = itt_null_id;
347 itt_id_make( &
id,
addr, addr_extra );
348 __itt_string_handle *k = ITT_get_string_handle(
key);
360 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
361 __itt_id id0 = itt_null_id;
362 __itt_id id1 = itt_null_id;
363 itt_id_make( &id0, addr0, addr0_extra );
364 itt_id_make( &id1, addr1, addr1_extra );
371 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
372 __itt_id task_id = itt_null_id;
373 __itt_id parent_id = itt_null_id;
375 itt_id_make( &task_id,
task, task_extra );
378 itt_id_make( &parent_id,
parent, parent_extra );
380 __itt_string_handle *n = ITT_get_string_handle(name_index);
381 ITTNOTIFY_VOID_D3(
task_begin,
d, task_id, parent_id, n );
386 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
393 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
394 __itt_id region_id = itt_null_id;
395 __itt_id parent_id = itt_null_id;
396 itt_id_make( ®ion_id, region, region_extra );
398 itt_id_make( &parent_id,
parent, parent_extra );
400 ITTNOTIFY_VOID_D3(
region_begin,
d, region_id, parent_id, NULL );
405 if ( __itt_domain *
d = get_itt_domain(
domain ) ) {
406 __itt_id region_id = itt_null_id;
407 itt_id_make( ®ion_id, region, region_extra );
408 ITTNOTIFY_VOID_D1( region_end,
d, region_id );
440 void* result = *
static_cast<void*const*
>(src);
488 return workers?
min(workers+1, my_active_value): my_active_value;
492 return my_head? my_active_value : 0;
501 #if __TBB_WIN8UI_SUPPORT && (_WIN32_WINNT < 0x0A00)
502 __TBB_ASSERT(
false,
"For Windows 8 Store* apps we must not set stack size" );
518 namespace interface9 {
555 new_active = c->
my_head->my_value;
556 else if ( c->
my_head->my_next )
557 new_active = c->
my_head->my_next->my_value;
560 if ( curr ==
this ) {
567 new_active = curr->my_value;
573 if ( new_active != old_active ) {
__TBB_atomic __TBB_Flag __TBB_atomic_flag
#define __TBB_ASSERT_RELEASE(predicate, message)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
#define _T(string_literal)
Standard Windows style macro to markup the string literals.
#define ITT_SYNC_RENAME(obj, name)
#define ITT_SYNC_CREATE(obj, type, name)
#define ITT_FINI_ITTLIB()
#define ITT_NOTIFY(name, obj)
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 relation
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 sync_cancel
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 * lock
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 * task
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 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 relation_add
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 task_end
void const char const char int ITT_FORMAT __itt_group_sync x void const char * name
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 parent
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 value
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 * domain
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 task_begin
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 sync_releasing
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 region_begin
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
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 metadata_add
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 * key
const size_t NFS_MaxLineSize
Compile-time constant that is upper bound on cache line/sector size.
#define __itt_domain_create
ITT_INLINE __itt_id ITTAPI __itt_id_make(void *addr, unsigned long long extra) ITT_INLINE_ATTRIBUTE
A convenience function is provided to create an ID without domain control.
#define __itt_string_handle_create
__itt_string_handle *ITTAPI __itt_string_handle_createA(const char *name)
Create a string handle. Create and return handle value that can be associated with a string....
__itt_relation
The kind of relation between two instances is specified by the enumerated type __itt_relation....
char tchar
Unicode support.
Identifiers declared inside namespace internal should never be used directly by client code.
void __TBB_EXPORTED_FUNC itt_region_begin_v9(itt_domain_enum domain, void *region, unsigned long long region_extra, void *parent, unsigned long long parent_extra, string_index name_index)
T __TBB_load_with_acquire(const volatile T &location)
int __TBB_load_ittnotify()
static __TBB_InitOnce __TBB_InitOnceHiddenInstance
void initialize_cache_aligned_allocator()
Defined in cache_aligned_allocator.cpp.
unsigned GetPrime(unsigned seed)
static stack_size_control stack_size_ctl
void __TBB_EXPORTED_FUNC call_itt_notify_v5(int t, void *ptr)
void __TBB_EXPORTED_FUNC itt_region_end_v9(itt_domain_enum domain, void *region, unsigned long long region_extra)
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
void DoOneTimeInitializations()
Performs thread-safe lazy one-time general TBB initialization.
void __TBB_EXPORTED_FUNC itt_task_end_v7(itt_domain_enum domain)
void Scheduler_OneTimeInitialization(bool itt_present)
Defined in scheduler.cpp.
T max(const T &val1, const T &val2)
Utility template function returning greater of the two values.
void __TBB_EXPORTED_FUNC itt_relation_add_v7(itt_domain_enum domain, void *addr0, unsigned long long addr0_extra, itt_relation relation, void *addr1, unsigned long long addr1_extra)
void PrintExtraVersionInfo(const char *category, const char *format,...)
Prints arbitrary extra TBB version information on stderr.
void __TBB_EXPORTED_FUNC itt_metadata_str_add_v7(itt_domain_enum domain, void *addr, unsigned long long addr_extra, string_index key, const char *value)
static const char _pad[NFS_MaxLineSize - sizeof(int)]
Padding in order to prevent false sharing.
static bool GetBoolEnvironmentVariable(const char *name)
T min(const T &val1, const T &val2)
Utility template function returning lesser of the two values.
void itt_set_sync_name_v3(void *obj, const tchar *name)
void *__TBB_EXPORTED_FUNC itt_load_pointer_with_acquire_v3(const void *src)
void *__TBB_EXPORTED_FUNC itt_load_pointer_v3(const void *src)
static allowed_parallelism_control allowed_parallelism_ctl
void __TBB_EXPORTED_FUNC itt_make_task_group_v7(itt_domain_enum domain, void *group, unsigned long long group_extra, void *parent, unsigned long long parent_extra, string_index name_index)
const size_t ThreadStackSize
void __TBB_EXPORTED_FUNC itt_store_pointer_with_release_v3(void *dst, void *src)
void __TBB_EXPORTED_FUNC itt_metadata_ptr_add_v11(itt_domain_enum domain, void *addr, unsigned long long addr_extra, string_index key, void *value)
void __TBB_EXPORTED_FUNC itt_task_begin_v7(itt_domain_enum domain, void *task, unsigned long long task_extra, void *parent, unsigned long long parent_extra, string_index name_index)
static control_storage * controls[]
void __TBB_store_with_release(volatile T &location, V value)
void PrintVersion()
Prints TBB version information on stderr.
static size_t active_value(parameter p)
void __TBB_EXPORTED_METHOD internal_destroy()
void __TBB_EXPORTED_METHOD internal_create()
A lock that occupies a single byte.
Represents acquisition of a mutex.
Pads type T to fill out to a multiple of cache line size.
static void release_resources()
Destroy the thread-local storage key and deinitialize RML.
static bool is_rethrow_broken
static void print_version_info()
static void terminate_auto_initialized_scheduler()
Undo automatic initialization if necessary; call when a thread exits.
static void acquire_resources()
Create key for thread-local storage and initialize RML.
static size_t DefaultPageSize
Caches the size of OS regular memory page.
static basic_tls< uintptr_t > theTLS
TLS for scheduler instances associated with individual threads.
static size_t default_page_size()
static unsigned default_num_threads()
static rml::tbb_factory theRMLServerFactory
static bool UsePrivateRML
static void initialize_rml_factory()
static unsigned DefaultNumberOfThreads
Caches the maximal level of parallelism supported by the hardware.
static bool is_speculation_enabled
static market * theMarket
Currently active global market.
static unsigned max_num_workers()
static void set_active_num_workers(unsigned w)
Set number of active workers.
static unsigned app_parallelism_limit()
Reports active parallelism level according to user's settings.
static global_market_mutex_type theMarketMutex
Mutex guarding creation/destruction of theMarket, insertions/deletions in my_arenas,...
scheduler_mutex_type global_market_mutex_type
Work stealing task scheduler.
virtual void apply_active() const
virtual size_t default_value() const =0
atomic< global_control * > my_head
virtual size_t active_value() const
virtual bool is_first_arg_preferred(size_t a, size_t b) const
virtual size_t active_value() const __TBB_override
virtual void apply_active() const __TBB_override
size_t active_value_if_present() const
virtual size_t default_value() const __TBB_override
virtual bool is_first_arg_preferred(size_t a, size_t b) const __TBB_override
virtual void apply_active() const __TBB_override
virtual size_t default_value() const __TBB_override
Class that supports TBB initialization.
static bool initialization_done()
static bool InitializationDone
Specifies if the one-time initializations has been done.
static void remove_ref()
Remove reference to resources. If last reference removed, release the resources.
static atomic< int > count
Counter of references to global shared resources such as TLS.
static void add_ref()
Add reference to resources. If first reference added, acquire the resources.
static __TBB_atomic_flag InitializationLock
Global initialization lock.