17 #ifndef __TBB_profiling_H
18 #define __TBB_profiling_H
20 #define __TBB_tbb_profiling_H_include_area
27 #define TBB_STRING_RESOURCE(index_name,str) index_name,
32 #undef TBB_STRING_RESOURCE
50 #if (_WIN32||_WIN64||__linux__) && !__MINGW32__ && TBB_USE_THREADING_TOOLS
62 inline size_t multibyte_to_widechar(
wchar_t* wcs,
const char* mbs,
size_t bufsize) {
65 mbstowcs_s( &len, wcs, bufsize, mbs, _TRUNCATE );
68 size_t len = mbstowcs( wcs, mbs, bufsize );
69 if(wcs && len!=
size_t(-1) )
70 wcs[len<bufsize-1? len: bufsize-1] = wchar_t(
'\0');
84 #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type) \
85 namespace profiling { \
86 inline void set_name( sync_object_type& obj, const wchar_t* name ) { \
87 tbb::internal::itt_set_sync_name_v3( &obj, name ); \
89 inline void set_name( sync_object_type& obj, const char* name ) { \
90 size_t len = tbb::internal::multibyte_to_widechar(NULL, name, 0); \
91 wchar_t *wname = new wchar_t[len]; \
92 tbb::internal::multibyte_to_widechar(wname, name, len); \
93 set_name( obj, wname ); \
98 #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type) \
99 namespace profiling { \
100 inline void set_name( sync_object_type& obj, const char* name ) { \
101 tbb::internal::itt_set_sync_name_v3( &obj, name ); \
109 #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type) \
110 namespace profiling { \
111 inline void set_name( sync_object_type&, const wchar_t* ) {} \
112 inline void set_name( sync_object_type&, const char* ) {} \
115 #define __TBB_DEFINE_PROFILING_SET_NAME(sync_object_type) \
116 namespace profiling { \
117 inline void set_name( sync_object_type&, const char* ) {} \
156 template <
typename T,
typename U>
158 #if TBB_USE_THREADING_TOOLS
160 __TBB_ASSERT(
sizeof(T) ==
sizeof(
void *),
"Type must be word-sized.");
167 template <
typename T>
169 #if TBB_USE_THREADING_TOOLS
171 __TBB_ASSERT(
sizeof(T) ==
sizeof(
void *),
"Type must be word-sized.");
172 #if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
174 #pragma warning (push)
175 #pragma warning (disable: 4311)
178 #if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
179 #pragma warning (pop)
187 template <
typename T>
189 #if TBB_USE_THREADING_TOOLS
191 __TBB_ASSERT(
sizeof(T) ==
sizeof(
void *),
"Type must be word-sized.");
198 template <
typename T>
200 #if TBB_USE_THREADING_TOOLS
202 __TBB_ASSERT(
sizeof(T) ==
sizeof(
void *),
"Type must be word-sized");
209 template <
typename T>
211 #if TBB_USE_THREADING_TOOLS
213 __TBB_ASSERT(
sizeof(T) ==
sizeof(
void *),
"Type must be word-sized");
221 template <
typename T>
223 #if TBB_USE_THREADING_TOOLS
225 __TBB_ASSERT(
sizeof(T) ==
sizeof(
void *),
"Type must be word-sized.");
232 #if TBB_USE_THREADING_TOOLS
301 #if TBB_PREVIEW_FLOW_GRAPH_TRACE
305 namespace profiling {
306 namespace interface10 {
308 #if TBB_USE_THREADING_TOOLS && !(TBB_USE_THREADING_TOOLS == 2)
315 const std::string my_name;
317 static void emit_trace(
const std::string &input) {
322 event(
const std::string &input)
330 static void emit(
const std::string &description) {
331 emit_trace(description);
338 event(
const std::string &) { }
342 static void emit(
const std::string &) { }
353 #undef __TBB_tbb_profiling_H_include_area
#define __TBB_EXPORTED_FUNC
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
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 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 * 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 __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 __itt_event event
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 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
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)
void itt_task_end(itt_domain_enum)
void itt_task_begin(itt_domain_enum, void *, unsigned long long, void *, unsigned long long, string_index)
void register_node_addr(itt_domain_enum, void *, unsigned long long, string_index, void *)
void itt_region_end(itt_domain_enum, void *, unsigned long long)
const uintptr_t NUM_NOTIFY_TYPES
@ __itt_relation_is_continued_by
@ __itt_relation_is_unknown
@ __itt_relation_is_predecessor_to
@ __itt_relation_is_continuation_of
@ __itt_relation_is_parent_of
@ __itt_relation_is_sibling_of
@ __itt_relation_is_dependent_on
@ __itt_relation_is_child_of
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 itt_metadata_str_add(itt_domain_enum, void *, unsigned long long, string_index, const char *)
void __TBB_EXPORTED_FUNC itt_task_end_v7(itt_domain_enum domain)
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 __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)
void itt_hide_store_word(T &dst, T src)
T itt_load_word_with_acquire(const tbb::atomic< T > &src)
void itt_relation_add(itt_domain_enum, void *, unsigned long long, itt_relation, void *, unsigned long long)
void itt_make_task_group(itt_domain_enum, void *, unsigned long long, void *, unsigned long long, string_index)
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)
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)
void itt_store_word_with_release(tbb::atomic< T > &dst, U src)
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)
T itt_hide_load_word(const T &src)
void call_itt_notify(notify_type, void *)
void __TBB_store_with_release(volatile T &location, V value)
void itt_region_begin(itt_domain_enum, void *, unsigned long long, void *, unsigned long long, string_index)
Base class for user-defined tasks.