blob: bff97f8680aee31ea092f001ece646093453c22f [file] [log] [blame]
Jim Cownie5e8470a2013-09-27 10:38:44 +00001#if USE_ITT_BUILD
2/*
3 * kmp_itt.c -- ITT Notify interface.
Jim Cownie4cc4bb42014-10-07 16:25:50 +00004 * $Revision: 43457 $
5 * $Date: 2014-09-17 03:57:22 -0500 (Wed, 17 Sep 2014) $
Jim Cownie5e8470a2013-09-27 10:38:44 +00006 */
7
8
9//===----------------------------------------------------------------------===//
10//
11// The LLVM Compiler Infrastructure
12//
13// This file is dual licensed under the MIT and the University of Illinois Open
14// Source Licenses. See LICENSE.txt for details.
15//
16//===----------------------------------------------------------------------===//
17
18
19#include "kmp_itt.h"
20
21#if KMP_DEBUG
22 #include "kmp_itt.inl"
23#endif
24
25
26#if USE_ITT_NOTIFY
27
Jim Cownie4cc4bb42014-10-07 16:25:50 +000028 kmp_int32 __kmp_barrier_domain_count;
29 kmp_int32 __kmp_region_domain_count;
30 __itt_domain* __kmp_itt_barrier_domains[KMP_MAX_FRAME_DOMAINS];
31 __itt_domain* __kmp_itt_region_domains[KMP_MAX_FRAME_DOMAINS];
32 __itt_domain* __kmp_itt_imbalance_domains[KMP_MAX_FRAME_DOMAINS];
33 kmp_int32 __kmp_itt_region_team_size[KMP_MAX_FRAME_DOMAINS];
34 __itt_domain * metadata_domain = NULL;
Jim Cownie5e8470a2013-09-27 10:38:44 +000035
36 #include "kmp_version.h"
37 #include "kmp_i18n.h"
38 #include "kmp_str.h"
39
40 KMP_BUILD_ASSERT( sizeof( kmp_itt_mark_t ) == sizeof( __itt_mark_type ) );
41
42 /*
43 Previously used warnings:
44
45 KMP_WARNING( IttAllNotifDisabled );
46 KMP_WARNING( IttObjNotifDisabled );
47 KMP_WARNING( IttMarkNotifDisabled );
48 KMP_WARNING( IttUnloadLibFailed, libittnotify );
49 */
50
51
52 kmp_int32 __kmp_itt_prepare_delay = 0;
53 kmp_bootstrap_lock_t __kmp_itt_debug_lock = KMP_BOOTSTRAP_LOCK_INITIALIZER( __kmp_itt_debug_lock );
54
55#endif // USE_ITT_NOTIFY
56
57void __kmp_itt_initialize() {
58
59 // ITTNotify library is loaded and initialized at first call to any ittnotify function,
60 // so we do not need to explicitly load it any more.
61 // Jusr report OMP RTL version to ITTNotify.
62
63 #if USE_ITT_NOTIFY
64 // Report OpenMP RTL version.
65 kmp_str_buf_t buf;
66 __itt_mark_type version;
67 __kmp_str_buf_init( & buf );
68 __kmp_str_buf_print(
69 & buf,
70 "OMP RTL Version %d.%d.%d",
71 __kmp_version_major,
72 __kmp_version_minor,
73 __kmp_version_build
74 );
75 if ( __itt_api_version_ptr != NULL ) {
76 __kmp_str_buf_print( & buf, ":%s", __itt_api_version() );
77 }; // if
78 version = __itt_mark_create( buf.str );
79 __itt_mark( version, NULL );
80 __kmp_str_buf_free( & buf );
81 #endif
82
83} // __kmp_itt_initialize
84
85
86void __kmp_itt_destroy() {
87 #if USE_ITT_NOTIFY
88 __kmp_itt_fini_ittlib();
89 #endif
90} // __kmp_itt_destroy
91
92
93extern "C"
94void
95__itt_error_handler(
96 __itt_error_code err,
97 va_list args
98) {
99
100 switch ( err ) {
101 case __itt_error_no_module : {
102 char const * library = va_arg( args, char const * );
103 #if KMP_OS_WINDOWS
104 int sys_err = va_arg( args, int );
105 __kmp_msg( kmp_ms_warning, KMP_MSG( IttLoadLibFailed, library ), KMP_SYSERRCODE( sys_err ), __kmp_msg_null );
106 #else
107 char const * sys_err = va_arg( args, char const * );
108 __kmp_msg( kmp_ms_warning, KMP_MSG( IttLoadLibFailed, library ), KMP_SYSERRMESG( sys_err ), __kmp_msg_null );
109 #endif
110 } break;
111 case __itt_error_no_symbol : {
112 char const * library = va_arg( args, char const * );
113 char const * symbol = va_arg( args, char const * );
114 KMP_WARNING( IttLookupFailed, symbol, library );
115 } break;
116 case __itt_error_unknown_group : {
117 char const * var = va_arg( args, char const * );
118 char const * group = va_arg( args, char const * );
119 KMP_WARNING( IttUnknownGroup, var, group );
120 } break;
121 case __itt_error_env_too_long : {
122 char const * var = va_arg( args, char const * );
123 size_t act_len = va_arg( args, size_t );
124 size_t max_len = va_arg( args, size_t );
125 KMP_WARNING( IttEnvVarTooLong, var, (unsigned long) act_len, (unsigned long) max_len );
126 } break;
127 case __itt_error_cant_read_env : {
128 char const * var = va_arg( args, char const * );
129 int sys_err = va_arg( args, int );
130 __kmp_msg( kmp_ms_warning, KMP_MSG( CantGetEnvVar, var ), KMP_ERR( sys_err ), __kmp_msg_null );
131 } break;
132 case __itt_error_system : {
133 char const * func = va_arg( args, char const * );
134 int sys_err = va_arg( args, int );
135 __kmp_msg( kmp_ms_warning, KMP_MSG( IttFunctionError, func ), KMP_SYSERRCODE( sys_err ), __kmp_msg_null );
136 } break;
137 default : {
138 KMP_WARNING( IttUnknownError, err );
139 };
140 }; // switch
141
142} // __itt_error_handler
143
144#endif /* USE_ITT_BUILD */