1 2 //===----------------------------------------------------------------------===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef _LEGACY_ITTNOTIFY_H_ 11 #define _LEGACY_ITTNOTIFY_H_ 12 13 /** 14 * @file 15 * @brief Legacy User API functions and types 16 */ 17 18 /** @cond exclude_from_documentation */ 19 #ifndef ITT_OS_WIN 20 # define ITT_OS_WIN 1 21 #endif /* ITT_OS_WIN */ 22 23 #ifndef ITT_OS_LINUX 24 # define ITT_OS_LINUX 2 25 #endif /* ITT_OS_LINUX */ 26 27 #ifndef ITT_OS_MAC 28 # define ITT_OS_MAC 3 29 #endif /* ITT_OS_MAC */ 30 31 #ifndef ITT_OS_FREEBSD 32 # define ITT_OS_FREEBSD 4 33 #endif /* ITT_OS_FREEBSD */ 34 35 #ifndef ITT_OS 36 # if defined WIN32 || defined _WIN32 37 # define ITT_OS ITT_OS_WIN 38 # elif defined( __APPLE__ ) && defined( __MACH__ ) 39 # define ITT_OS ITT_OS_MAC 40 # elif defined( __FreeBSD__ ) 41 # define ITT_OS ITT_OS_FREEBSD 42 # else 43 # define ITT_OS ITT_OS_LINUX 44 # endif 45 #endif /* ITT_OS */ 46 47 #ifndef ITT_PLATFORM_WIN 48 # define ITT_PLATFORM_WIN 1 49 #endif /* ITT_PLATFORM_WIN */ 50 51 #ifndef ITT_PLATFORM_POSIX 52 # define ITT_PLATFORM_POSIX 2 53 #endif /* ITT_PLATFORM_POSIX */ 54 55 #ifndef ITT_PLATFORM_MAC 56 # define ITT_PLATFORM_MAC 3 57 #endif /* ITT_PLATFORM_MAC */ 58 59 #ifndef ITT_PLATFORM_FREEBSD 60 # define ITT_PLATFORM_FREEBSD 4 61 #endif /* ITT_PLATFORM_FREEBSD */ 62 63 #ifndef ITT_PLATFORM 64 # if ITT_OS==ITT_OS_WIN 65 # define ITT_PLATFORM ITT_PLATFORM_WIN 66 # elif ITT_OS==ITT_OS_MAC 67 # define ITT_PLATFORM ITT_PLATFORM_MAC 68 # elif ITT_OS==ITT_OS_FREEBSD 69 # define ITT_PLATFORM ITT_PLATFORM_FREEBSD 70 # else 71 # define ITT_PLATFORM ITT_PLATFORM_POSIX 72 # endif 73 #endif /* ITT_PLATFORM */ 74 75 #if defined(_UNICODE) && !defined(UNICODE) 76 #define UNICODE 77 #endif 78 79 #include <stddef.h> 80 #if ITT_PLATFORM==ITT_PLATFORM_WIN 81 #include <tchar.h> 82 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 83 #include <stdint.h> 84 #if defined(UNICODE) || defined(_UNICODE) 85 #include <wchar.h> 86 #endif /* UNICODE || _UNICODE */ 87 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 88 89 #ifndef ITTAPI_CDECL 90 # if ITT_PLATFORM==ITT_PLATFORM_WIN 91 # define ITTAPI_CDECL __cdecl 92 # else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 93 # if defined _M_IX86 || defined __i386__ 94 # define ITTAPI_CDECL __attribute__ ((cdecl)) 95 # else /* _M_IX86 || __i386__ */ 96 # define ITTAPI_CDECL /* actual only on x86 platform */ 97 # endif /* _M_IX86 || __i386__ */ 98 # endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 99 #endif /* ITTAPI_CDECL */ 100 101 #ifndef STDCALL 102 # if ITT_PLATFORM==ITT_PLATFORM_WIN 103 # define STDCALL __stdcall 104 # else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 105 # if defined _M_IX86 || defined __i386__ 106 # define STDCALL __attribute__ ((stdcall)) 107 # else /* _M_IX86 || __i386__ */ 108 # define STDCALL /* supported only on x86 platform */ 109 # endif /* _M_IX86 || __i386__ */ 110 # endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 111 #endif /* STDCALL */ 112 113 #define ITTAPI ITTAPI_CDECL 114 #define LIBITTAPI ITTAPI_CDECL 115 116 /* TODO: Temporary for compatibility! */ 117 #define ITTAPI_CALL ITTAPI_CDECL 118 #define LIBITTAPI_CALL ITTAPI_CDECL 119 120 #if ITT_PLATFORM==ITT_PLATFORM_WIN 121 /* use __forceinline (VC++ specific) */ 122 #define ITT_INLINE __forceinline 123 #define ITT_INLINE_ATTRIBUTE /* nothing */ 124 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 125 /* 126 * Generally, functions are not inlined unless optimization is specified. 127 * For functions declared inline, this attribute inlines the function even 128 * if no optimization level was specified. 129 */ 130 #ifdef __STRICT_ANSI__ 131 #define ITT_INLINE static 132 #define ITT_INLINE_ATTRIBUTE __attribute__((unused)) 133 #else /* __STRICT_ANSI__ */ 134 #define ITT_INLINE static inline 135 #define ITT_INLINE_ATTRIBUTE __attribute__((always_inline, unused)) 136 #endif /* __STRICT_ANSI__ */ 137 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 138 /** @endcond */ 139 140 /** @cond exclude_from_documentation */ 141 /* Helper macro for joining tokens */ 142 #define ITT_JOIN_AUX(p,n) p##n 143 #define ITT_JOIN(p,n) ITT_JOIN_AUX(p,n) 144 145 #ifdef ITT_MAJOR 146 #undef ITT_MAJOR 147 #endif 148 #ifdef ITT_MINOR 149 #undef ITT_MINOR 150 #endif 151 #define ITT_MAJOR 3 152 #define ITT_MINOR 0 153 154 /* Standard versioning of a token with major and minor version numbers */ 155 #define ITT_VERSIONIZE(x) \ 156 ITT_JOIN(x, \ 157 ITT_JOIN(_, \ 158 ITT_JOIN(ITT_MAJOR, \ 159 ITT_JOIN(_, ITT_MINOR)))) 160 161 #ifndef INTEL_ITTNOTIFY_PREFIX 162 # define INTEL_ITTNOTIFY_PREFIX __itt_ 163 #endif /* INTEL_ITTNOTIFY_PREFIX */ 164 #ifndef INTEL_ITTNOTIFY_POSTFIX 165 # define INTEL_ITTNOTIFY_POSTFIX _ptr_ 166 #endif /* INTEL_ITTNOTIFY_POSTFIX */ 167 168 #define ITTNOTIFY_NAME_AUX(n) ITT_JOIN(INTEL_ITTNOTIFY_PREFIX,n) 169 #define ITTNOTIFY_NAME(n) ITT_VERSIONIZE(ITTNOTIFY_NAME_AUX(ITT_JOIN(n,INTEL_ITTNOTIFY_POSTFIX))) 170 171 #define ITTNOTIFY_VOID(n) (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n) 172 #define ITTNOTIFY_DATA(n) (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n) 173 174 #define ITTNOTIFY_VOID_D0(n,d) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d) 175 #define ITTNOTIFY_VOID_D1(n,d,x) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x) 176 #define ITTNOTIFY_VOID_D2(n,d,x,y) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y) 177 #define ITTNOTIFY_VOID_D3(n,d,x,y,z) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z) 178 #define ITTNOTIFY_VOID_D4(n,d,x,y,z,a) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a) 179 #define ITTNOTIFY_VOID_D5(n,d,x,y,z,a,b) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b) 180 #define ITTNOTIFY_VOID_D6(n,d,x,y,z,a,b,c) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c) 181 #define ITTNOTIFY_DATA_D0(n,d) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d) 182 #define ITTNOTIFY_DATA_D1(n,d,x) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x) 183 #define ITTNOTIFY_DATA_D2(n,d,x,y) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x,y) 184 #define ITTNOTIFY_DATA_D3(n,d,x,y,z) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x,y,z) 185 #define ITTNOTIFY_DATA_D4(n,d,x,y,z,a) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x,y,z,a) 186 #define ITTNOTIFY_DATA_D5(n,d,x,y,z,a,b) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b) 187 #define ITTNOTIFY_DATA_D6(n,d,x,y,z,a,b,c) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ? 0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c) 188 189 #ifdef ITT_STUB 190 #undef ITT_STUB 191 #endif 192 #ifdef ITT_STUBV 193 #undef ITT_STUBV 194 #endif 195 #define ITT_STUBV(api,type,name,args) \ 196 typedef type (api* ITT_JOIN(ITTNOTIFY_NAME(name),_t)) args; \ 197 extern ITT_JOIN(ITTNOTIFY_NAME(name),_t) ITTNOTIFY_NAME(name); 198 #define ITT_STUB ITT_STUBV 199 /** @endcond */ 200 201 #ifdef __cplusplus 202 extern "C" { 203 #endif /* __cplusplus */ 204 205 /** 206 * @defgroup legacy Legacy API 207 * @{ 208 * @} 209 */ 210 211 /** 212 * @defgroup legacy_control Collection Control 213 * @ingroup legacy 214 * General behavior: application continues to run, but no profiling information is being collected 215 * 216 * Pausing occurs not only for the current thread but for all process as well as spawned processes 217 * - Intel(R) Parallel Inspector and Intel(R) Inspector XE: 218 * - Does not analyze or report errors that involve memory access. 219 * - Other errors are reported as usual. Pausing data collection in 220 * Intel(R) Parallel Inspector and Intel(R) Inspector XE 221 * only pauses tracing and analyzing memory access. 222 * It does not pause tracing or analyzing threading APIs. 223 * . 224 * - Intel(R) Parallel Amplifier and Intel(R) VTune(TM) Amplifier XE: 225 * - Does continue to record when new threads are started. 226 * . 227 * - Other effects: 228 * - Possible reduction of runtime overhead. 229 * . 230 * @{ 231 */ 232 #ifndef _ITTNOTIFY_H_ 233 /** @brief Pause collection */ 234 void ITTAPI __itt_pause(void); 235 /** @brief Resume collection */ 236 void ITTAPI __itt_resume(void); 237 /** @brief Detach collection */ 238 void ITTAPI __itt_detach(void); 239 240 /** @cond exclude_from_documentation */ 241 #ifndef INTEL_NO_MACRO_BODY 242 #ifndef INTEL_NO_ITTNOTIFY_API 243 ITT_STUBV(ITTAPI, void, pause, (void)) 244 ITT_STUBV(ITTAPI, void, resume, (void)) 245 ITT_STUBV(ITTAPI, void, detach, (void)) 246 #define __itt_pause ITTNOTIFY_VOID(pause) 247 #define __itt_pause_ptr ITTNOTIFY_NAME(pause) 248 #define __itt_resume ITTNOTIFY_VOID(resume) 249 #define __itt_resume_ptr ITTNOTIFY_NAME(resume) 250 #define __itt_detach ITTNOTIFY_VOID(detach) 251 #define __itt_detach_ptr ITTNOTIFY_NAME(detach) 252 #else /* INTEL_NO_ITTNOTIFY_API */ 253 #define __itt_pause() 254 #define __itt_pause_ptr 0 255 #define __itt_resume() 256 #define __itt_resume_ptr 0 257 #define __itt_detach() 258 #define __itt_detach_ptr 0 259 #endif /* INTEL_NO_ITTNOTIFY_API */ 260 #else /* INTEL_NO_MACRO_BODY */ 261 #define __itt_pause_ptr 0 262 #define __itt_resume_ptr 0 263 #define __itt_detach_ptr 0 264 #endif /* INTEL_NO_MACRO_BODY */ 265 /** @endcond */ 266 #endif /* _ITTNOTIFY_H_ */ 267 /** @} legacy_control group */ 268 269 /** 270 * @defgroup legacy_threads Threads 271 * @ingroup legacy 272 * Threads group 273 * @warning Legacy API 274 * @{ 275 */ 276 /** 277 * @deprecated Legacy API 278 * @brief Set name to be associated with thread in analysis GUI. 279 * @return __itt_err upon failure (name or namelen being null,name and namelen mismatched) 280 */ 281 #if ITT_PLATFORM==ITT_PLATFORM_WIN 282 int LIBITTAPI __itt_thr_name_setA(const char *name, int namelen); 283 int LIBITTAPI __itt_thr_name_setW(const wchar_t *name, int namelen); 284 #if defined(UNICODE) || defined(_UNICODE) 285 # define __itt_thr_name_set __itt_thr_name_setW 286 # define __itt_thr_name_set_ptr __itt_thr_name_setW_ptr 287 #else 288 # define __itt_thr_name_set __itt_thr_name_setA 289 # define __itt_thr_name_set_ptr __itt_thr_name_setA_ptr 290 #endif /* UNICODE */ 291 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 292 int LIBITTAPI __itt_thr_name_set(const char *name, int namelen); 293 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 294 295 /** @cond exclude_from_documentation */ 296 #ifndef INTEL_NO_MACRO_BODY 297 #ifndef INTEL_NO_ITTNOTIFY_API 298 #if ITT_PLATFORM==ITT_PLATFORM_WIN 299 ITT_STUB(LIBITTAPI, int, thr_name_setA, (const char *name, int namelen)) 300 ITT_STUB(LIBITTAPI, int, thr_name_setW, (const wchar_t *name, int namelen)) 301 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 302 ITT_STUB(LIBITTAPI, int, thr_name_set, (const char *name, int namelen)) 303 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 304 #if ITT_PLATFORM==ITT_PLATFORM_WIN 305 #define __itt_thr_name_setA ITTNOTIFY_DATA(thr_name_setA) 306 #define __itt_thr_name_setA_ptr ITTNOTIFY_NAME(thr_name_setA) 307 #define __itt_thr_name_setW ITTNOTIFY_DATA(thr_name_setW) 308 #define __itt_thr_name_setW_ptr ITTNOTIFY_NAME(thr_name_setW) 309 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 310 #define __itt_thr_name_set ITTNOTIFY_DATA(thr_name_set) 311 #define __itt_thr_name_set_ptr ITTNOTIFY_NAME(thr_name_set) 312 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 313 #else /* INTEL_NO_ITTNOTIFY_API */ 314 #if ITT_PLATFORM==ITT_PLATFORM_WIN 315 #define __itt_thr_name_setA(name, namelen) 316 #define __itt_thr_name_setA_ptr 0 317 #define __itt_thr_name_setW(name, namelen) 318 #define __itt_thr_name_setW_ptr 0 319 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 320 #define __itt_thr_name_set(name, namelen) 321 #define __itt_thr_name_set_ptr 0 322 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 323 #endif /* INTEL_NO_ITTNOTIFY_API */ 324 #else /* INTEL_NO_MACRO_BODY */ 325 #if ITT_PLATFORM==ITT_PLATFORM_WIN 326 #define __itt_thr_name_setA_ptr 0 327 #define __itt_thr_name_setW_ptr 0 328 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 329 #define __itt_thr_name_set_ptr 0 330 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 331 #endif /* INTEL_NO_MACRO_BODY */ 332 /** @endcond */ 333 334 /** 335 * @deprecated Legacy API 336 * @brief Mark current thread as ignored from this point on, for the duration of its existence. 337 */ 338 void LIBITTAPI __itt_thr_ignore(void); 339 340 /** @cond exclude_from_documentation */ 341 #ifndef INTEL_NO_MACRO_BODY 342 #ifndef INTEL_NO_ITTNOTIFY_API 343 ITT_STUBV(LIBITTAPI, void, thr_ignore, (void)) 344 #define __itt_thr_ignore ITTNOTIFY_VOID(thr_ignore) 345 #define __itt_thr_ignore_ptr ITTNOTIFY_NAME(thr_ignore) 346 #else /* INTEL_NO_ITTNOTIFY_API */ 347 #define __itt_thr_ignore() 348 #define __itt_thr_ignore_ptr 0 349 #endif /* INTEL_NO_ITTNOTIFY_API */ 350 #else /* INTEL_NO_MACRO_BODY */ 351 #define __itt_thr_ignore_ptr 0 352 #endif /* INTEL_NO_MACRO_BODY */ 353 /** @endcond */ 354 /** @} legacy_threads group */ 355 356 /** 357 * @defgroup legacy_sync Synchronization 358 * @ingroup legacy 359 * Synchronization group 360 * @warning Legacy API 361 * @{ 362 */ 363 /** 364 * @hideinitializer 365 * @brief possible value of attribute argument for sync object type 366 */ 367 #define __itt_attr_barrier 1 368 369 /** 370 * @hideinitializer 371 * @brief possible value of attribute argument for sync object type 372 */ 373 #define __itt_attr_mutex 2 374 375 /** 376 * @deprecated Legacy API 377 * @brief Assign a name to a sync object using char or Unicode string 378 * @param[in] addr - pointer to the sync object. You should use a real pointer to your object 379 * to make sure that the values don't clash with other object addresses 380 * @param[in] objtype - null-terminated object type string. If NULL is passed, the object will 381 * be assumed to be of generic "User Synchronization" type 382 * @param[in] objname - null-terminated object name string. If NULL, no name will be assigned 383 * to the object -- you can use the __itt_sync_rename call later to assign 384 * the name 385 * @param[in] attribute - one of [#__itt_attr_barrier, #__itt_attr_mutex] values which defines the 386 * exact semantics of how prepare/acquired/releasing calls work. 387 */ 388 #if ITT_PLATFORM==ITT_PLATFORM_WIN 389 void ITTAPI __itt_sync_set_nameA(void *addr, const char *objtype, const char *objname, int attribute); 390 void ITTAPI __itt_sync_set_nameW(void *addr, const wchar_t *objtype, const wchar_t *objname, int attribute); 391 #if defined(UNICODE) || defined(_UNICODE) 392 # define __itt_sync_set_name __itt_sync_set_nameW 393 # define __itt_sync_set_name_ptr __itt_sync_set_nameW_ptr 394 #else /* UNICODE */ 395 # define __itt_sync_set_name __itt_sync_set_nameA 396 # define __itt_sync_set_name_ptr __itt_sync_set_nameA_ptr 397 #endif /* UNICODE */ 398 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 399 void ITTAPI __itt_sync_set_name(void *addr, const char* objtype, const char* objname, int attribute); 400 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 401 402 /** @cond exclude_from_documentation */ 403 #ifndef INTEL_NO_MACRO_BODY 404 #ifndef INTEL_NO_ITTNOTIFY_API 405 #if ITT_PLATFORM==ITT_PLATFORM_WIN 406 ITT_STUBV(ITTAPI, void, sync_set_nameA, (void *addr, const char *objtype, const char *objname, int attribute)) 407 ITT_STUBV(ITTAPI, void, sync_set_nameW, (void *addr, const wchar_t *objtype, const wchar_t *objname, int attribute)) 408 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 409 ITT_STUBV(ITTAPI, void, sync_set_name, (void *addr, const char *objtype, const char *objname, int attribute)) 410 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 411 #if ITT_PLATFORM==ITT_PLATFORM_WIN 412 #define __itt_sync_set_nameA ITTNOTIFY_VOID(sync_set_nameA) 413 #define __itt_sync_set_nameA_ptr ITTNOTIFY_NAME(sync_set_nameA) 414 #define __itt_sync_set_nameW ITTNOTIFY_VOID(sync_set_nameW) 415 #define __itt_sync_set_nameW_ptr ITTNOTIFY_NAME(sync_set_nameW) 416 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 417 #define __itt_sync_set_name ITTNOTIFY_VOID(sync_set_name) 418 #define __itt_sync_set_name_ptr ITTNOTIFY_NAME(sync_set_name) 419 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 420 #else /* INTEL_NO_ITTNOTIFY_API */ 421 #if ITT_PLATFORM==ITT_PLATFORM_WIN 422 #define __itt_sync_set_nameA(addr, objtype, objname, attribute) 423 #define __itt_sync_set_nameA_ptr 0 424 #define __itt_sync_set_nameW(addr, objtype, objname, attribute) 425 #define __itt_sync_set_nameW_ptr 0 426 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 427 #define __itt_sync_set_name(addr, objtype, objname, attribute) 428 #define __itt_sync_set_name_ptr 0 429 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 430 #endif /* INTEL_NO_ITTNOTIFY_API */ 431 #else /* INTEL_NO_MACRO_BODY */ 432 #if ITT_PLATFORM==ITT_PLATFORM_WIN 433 #define __itt_sync_set_nameA_ptr 0 434 #define __itt_sync_set_nameW_ptr 0 435 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 436 #define __itt_sync_set_name_ptr 0 437 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 438 #endif /* INTEL_NO_MACRO_BODY */ 439 /** @endcond */ 440 441 /** 442 * @deprecated Legacy API 443 * @brief Assign a name and type to a sync object using char or Unicode string 444 * @param[in] addr - pointer to the sync object. You should use a real pointer to your object 445 * to make sure that the values don't clash with other object addresses 446 * @param[in] objtype - null-terminated object type string. If NULL is passed, the object will 447 * be assumed to be of generic "User Synchronization" type 448 * @param[in] objname - null-terminated object name string. If NULL, no name will be assigned 449 * to the object -- you can use the __itt_sync_rename call later to assign 450 * the name 451 * @param[in] typelen, namelen - a length of string for appropriate objtype and objname parameter 452 * @param[in] attribute - one of [#__itt_attr_barrier, #__itt_attr_mutex] values which defines the 453 * exact semantics of how prepare/acquired/releasing calls work. 454 * @return __itt_err upon failure (name or namelen being null,name and namelen mismatched) 455 */ 456 #if ITT_PLATFORM==ITT_PLATFORM_WIN 457 int LIBITTAPI __itt_notify_sync_nameA(void *addr, const char *objtype, int typelen, const char *objname, int namelen, int attribute); 458 int LIBITTAPI __itt_notify_sync_nameW(void *addr, const wchar_t *objtype, int typelen, const wchar_t *objname, int namelen, int attribute); 459 #if defined(UNICODE) || defined(_UNICODE) 460 # define __itt_notify_sync_name __itt_notify_sync_nameW 461 #else 462 # define __itt_notify_sync_name __itt_notify_sync_nameA 463 #endif 464 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 465 int LIBITTAPI __itt_notify_sync_name(void *addr, const char *objtype, int typelen, const char *objname, int namelen, int attribute); 466 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 467 468 /** @cond exclude_from_documentation */ 469 #ifndef INTEL_NO_MACRO_BODY 470 #ifndef INTEL_NO_ITTNOTIFY_API 471 #if ITT_PLATFORM==ITT_PLATFORM_WIN 472 ITT_STUB(LIBITTAPI, int, notify_sync_nameA, (void *addr, const char *objtype, int typelen, const char *objname, int namelen, int attribute)) 473 ITT_STUB(LIBITTAPI, int, notify_sync_nameW, (void *addr, const wchar_t *objtype, int typelen, const wchar_t *objname, int namelen, int attribute)) 474 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 475 ITT_STUB(LIBITTAPI, int, notify_sync_name, (void *addr, const char *objtype, int typelen, const char *objname, int namelen, int attribute)) 476 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 477 #if ITT_PLATFORM==ITT_PLATFORM_WIN 478 #define __itt_notify_sync_nameA ITTNOTIFY_DATA(notify_sync_nameA) 479 #define __itt_notify_sync_nameA_ptr ITTNOTIFY_NAME(notify_sync_nameA) 480 #define __itt_notify_sync_nameW ITTNOTIFY_DATA(notify_sync_nameW) 481 #define __itt_notify_sync_nameW_ptr ITTNOTIFY_NAME(notify_sync_nameW) 482 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 483 #define __itt_notify_sync_name ITTNOTIFY_DATA(notify_sync_name) 484 #define __itt_notify_sync_name_ptr ITTNOTIFY_NAME(notify_sync_name) 485 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 486 #else /* INTEL_NO_ITTNOTIFY_API */ 487 #if ITT_PLATFORM==ITT_PLATFORM_WIN 488 #define __itt_notify_sync_nameA(addr, objtype, typelen, objname, namelen, attribute) 489 #define __itt_notify_sync_nameA_ptr 0 490 #define __itt_notify_sync_nameW(addr, objtype, typelen, objname, namelen, attribute) 491 #define __itt_notify_sync_nameW_ptr 0 492 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 493 #define __itt_notify_sync_name(addr, objtype, typelen, objname, namelen, attribute) 494 #define __itt_notify_sync_name_ptr 0 495 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 496 #endif /* INTEL_NO_ITTNOTIFY_API */ 497 #else /* INTEL_NO_MACRO_BODY */ 498 #if ITT_PLATFORM==ITT_PLATFORM_WIN 499 #define __itt_notify_sync_nameA_ptr 0 500 #define __itt_notify_sync_nameW_ptr 0 501 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 502 #define __itt_notify_sync_name_ptr 0 503 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 504 #endif /* INTEL_NO_MACRO_BODY */ 505 /** @endcond */ 506 507 /** 508 * @deprecated Legacy API 509 * @brief Enter spin loop on user-defined sync object 510 */ 511 void LIBITTAPI __itt_notify_sync_prepare(void* addr); 512 513 /** @cond exclude_from_documentation */ 514 #ifndef INTEL_NO_MACRO_BODY 515 #ifndef INTEL_NO_ITTNOTIFY_API 516 ITT_STUBV(LIBITTAPI, void, notify_sync_prepare, (void *addr)) 517 #define __itt_notify_sync_prepare ITTNOTIFY_VOID(notify_sync_prepare) 518 #define __itt_notify_sync_prepare_ptr ITTNOTIFY_NAME(notify_sync_prepare) 519 #else /* INTEL_NO_ITTNOTIFY_API */ 520 #define __itt_notify_sync_prepare(addr) 521 #define __itt_notify_sync_prepare_ptr 0 522 #endif /* INTEL_NO_ITTNOTIFY_API */ 523 #else /* INTEL_NO_MACRO_BODY */ 524 #define __itt_notify_sync_prepare_ptr 0 525 #endif /* INTEL_NO_MACRO_BODY */ 526 /** @endcond */ 527 528 /** 529 * @deprecated Legacy API 530 * @brief Quit spin loop without acquiring spin object 531 */ 532 void LIBITTAPI __itt_notify_sync_cancel(void *addr); 533 534 /** @cond exclude_from_documentation */ 535 #ifndef INTEL_NO_MACRO_BODY 536 #ifndef INTEL_NO_ITTNOTIFY_API 537 ITT_STUBV(LIBITTAPI, void, notify_sync_cancel, (void *addr)) 538 #define __itt_notify_sync_cancel ITTNOTIFY_VOID(notify_sync_cancel) 539 #define __itt_notify_sync_cancel_ptr ITTNOTIFY_NAME(notify_sync_cancel) 540 #else /* INTEL_NO_ITTNOTIFY_API */ 541 #define __itt_notify_sync_cancel(addr) 542 #define __itt_notify_sync_cancel_ptr 0 543 #endif /* INTEL_NO_ITTNOTIFY_API */ 544 #else /* INTEL_NO_MACRO_BODY */ 545 #define __itt_notify_sync_cancel_ptr 0 546 #endif /* INTEL_NO_MACRO_BODY */ 547 /** @endcond */ 548 549 /** 550 * @deprecated Legacy API 551 * @brief Successful spin loop completion (sync object acquired) 552 */ 553 void LIBITTAPI __itt_notify_sync_acquired(void *addr); 554 555 /** @cond exclude_from_documentation */ 556 #ifndef INTEL_NO_MACRO_BODY 557 #ifndef INTEL_NO_ITTNOTIFY_API 558 ITT_STUBV(LIBITTAPI, void, notify_sync_acquired, (void *addr)) 559 #define __itt_notify_sync_acquired ITTNOTIFY_VOID(notify_sync_acquired) 560 #define __itt_notify_sync_acquired_ptr ITTNOTIFY_NAME(notify_sync_acquired) 561 #else /* INTEL_NO_ITTNOTIFY_API */ 562 #define __itt_notify_sync_acquired(addr) 563 #define __itt_notify_sync_acquired_ptr 0 564 #endif /* INTEL_NO_ITTNOTIFY_API */ 565 #else /* INTEL_NO_MACRO_BODY */ 566 #define __itt_notify_sync_acquired_ptr 0 567 #endif /* INTEL_NO_MACRO_BODY */ 568 /** @endcond */ 569 570 /** 571 * @deprecated Legacy API 572 * @brief Start sync object releasing code. Is called before the lock release call. 573 */ 574 void LIBITTAPI __itt_notify_sync_releasing(void* addr); 575 576 /** @cond exclude_from_documentation */ 577 #ifndef INTEL_NO_MACRO_BODY 578 #ifndef INTEL_NO_ITTNOTIFY_API 579 ITT_STUBV(LIBITTAPI, void, notify_sync_releasing, (void *addr)) 580 #define __itt_notify_sync_releasing ITTNOTIFY_VOID(notify_sync_releasing) 581 #define __itt_notify_sync_releasing_ptr ITTNOTIFY_NAME(notify_sync_releasing) 582 #else /* INTEL_NO_ITTNOTIFY_API */ 583 #define __itt_notify_sync_releasing(addr) 584 #define __itt_notify_sync_releasing_ptr 0 585 #endif /* INTEL_NO_ITTNOTIFY_API */ 586 #else /* INTEL_NO_MACRO_BODY */ 587 #define __itt_notify_sync_releasing_ptr 0 588 #endif /* INTEL_NO_MACRO_BODY */ 589 /** @endcond */ 590 /** @} legacy_sync group */ 591 592 #ifndef _ITTNOTIFY_H_ 593 /** 594 * @defgroup legacy_events Events 595 * @ingroup legacy 596 * Events group 597 * @{ 598 */ 599 600 /** @brief user event type */ 601 typedef int __itt_event; 602 603 /** 604 * @brief Create an event notification 605 * @note name or namelen being null/name and namelen not matching, user event feature not enabled 606 * @return non-zero event identifier upon success and __itt_err otherwise 607 */ 608 #if ITT_PLATFORM==ITT_PLATFORM_WIN 609 __itt_event LIBITTAPI __itt_event_createA(const char *name, int namelen); 610 __itt_event LIBITTAPI __itt_event_createW(const wchar_t *name, int namelen); 611 #if defined(UNICODE) || defined(_UNICODE) 612 # define __itt_event_create __itt_event_createW 613 # define __itt_event_create_ptr __itt_event_createW_ptr 614 #else 615 # define __itt_event_create __itt_event_createA 616 # define __itt_event_create_ptr __itt_event_createA_ptr 617 #endif /* UNICODE */ 618 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 619 __itt_event LIBITTAPI __itt_event_create(const char *name, int namelen); 620 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 621 622 /** @cond exclude_from_documentation */ 623 #ifndef INTEL_NO_MACRO_BODY 624 #ifndef INTEL_NO_ITTNOTIFY_API 625 #if ITT_PLATFORM==ITT_PLATFORM_WIN 626 ITT_STUB(LIBITTAPI, __itt_event, event_createA, (const char *name, int namelen)) 627 ITT_STUB(LIBITTAPI, __itt_event, event_createW, (const wchar_t *name, int namelen)) 628 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 629 ITT_STUB(LIBITTAPI, __itt_event, event_create, (const char *name, int namelen)) 630 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 631 #if ITT_PLATFORM==ITT_PLATFORM_WIN 632 #define __itt_event_createA ITTNOTIFY_DATA(event_createA) 633 #define __itt_event_createA_ptr ITTNOTIFY_NAME(event_createA) 634 #define __itt_event_createW ITTNOTIFY_DATA(event_createW) 635 #define __itt_event_createW_ptr ITTNOTIFY_NAME(event_createW) 636 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 637 #define __itt_event_create ITTNOTIFY_DATA(event_create) 638 #define __itt_event_create_ptr ITTNOTIFY_NAME(event_create) 639 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 640 #else /* INTEL_NO_ITTNOTIFY_API */ 641 #if ITT_PLATFORM==ITT_PLATFORM_WIN 642 #define __itt_event_createA(name, namelen) (__itt_event)0 643 #define __itt_event_createA_ptr 0 644 #define __itt_event_createW(name, namelen) (__itt_event)0 645 #define __itt_event_createW_ptr 0 646 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 647 #define __itt_event_create(name, namelen) (__itt_event)0 648 #define __itt_event_create_ptr 0 649 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 650 #endif /* INTEL_NO_ITTNOTIFY_API */ 651 #else /* INTEL_NO_MACRO_BODY */ 652 #if ITT_PLATFORM==ITT_PLATFORM_WIN 653 #define __itt_event_createA_ptr 0 654 #define __itt_event_createW_ptr 0 655 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 656 #define __itt_event_create_ptr 0 657 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 658 #endif /* INTEL_NO_MACRO_BODY */ 659 /** @endcond */ 660 661 /** 662 * @brief Record an event occurrence. 663 * @return __itt_err upon failure (invalid event id/user event feature not enabled) 664 */ 665 int LIBITTAPI __itt_event_start(__itt_event event); 666 667 /** @cond exclude_from_documentation */ 668 #ifndef INTEL_NO_MACRO_BODY 669 #ifndef INTEL_NO_ITTNOTIFY_API 670 ITT_STUB(LIBITTAPI, int, event_start, (__itt_event event)) 671 #define __itt_event_start ITTNOTIFY_DATA(event_start) 672 #define __itt_event_start_ptr ITTNOTIFY_NAME(event_start) 673 #else /* INTEL_NO_ITTNOTIFY_API */ 674 #define __itt_event_start(event) (int)0 675 #define __itt_event_start_ptr 0 676 #endif /* INTEL_NO_ITTNOTIFY_API */ 677 #else /* INTEL_NO_MACRO_BODY */ 678 #define __itt_event_start_ptr 0 679 #endif /* INTEL_NO_MACRO_BODY */ 680 /** @endcond */ 681 682 /** 683 * @brief Record an event end occurrence. 684 * @note It is optional if events do not have durations. 685 * @return __itt_err upon failure (invalid event id/user event feature not enabled) 686 */ 687 int LIBITTAPI __itt_event_end(__itt_event event); 688 689 /** @cond exclude_from_documentation */ 690 #ifndef INTEL_NO_MACRO_BODY 691 #ifndef INTEL_NO_ITTNOTIFY_API 692 ITT_STUB(LIBITTAPI, int, event_end, (__itt_event event)) 693 #define __itt_event_end ITTNOTIFY_DATA(event_end) 694 #define __itt_event_end_ptr ITTNOTIFY_NAME(event_end) 695 #else /* INTEL_NO_ITTNOTIFY_API */ 696 #define __itt_event_end(event) (int)0 697 #define __itt_event_end_ptr 0 698 #endif /* INTEL_NO_ITTNOTIFY_API */ 699 #else /* INTEL_NO_MACRO_BODY */ 700 #define __itt_event_end_ptr 0 701 #endif /* INTEL_NO_MACRO_BODY */ 702 /** @endcond */ 703 /** @} legacy_events group */ 704 #endif /* _ITTNOTIFY_H_ */ 705 706 /** 707 * @defgroup legacy_memory Memory Accesses 708 * @ingroup legacy 709 */ 710 711 /** 712 * @deprecated Legacy API 713 * @brief Inform the tool of memory accesses on reading 714 */ 715 void LIBITTAPI __itt_memory_read(void *addr, size_t size); 716 717 /** @cond exclude_from_documentation */ 718 #ifndef INTEL_NO_MACRO_BODY 719 #ifndef INTEL_NO_ITTNOTIFY_API 720 ITT_STUBV(LIBITTAPI, void, memory_read, (void *addr, size_t size)) 721 #define __itt_memory_read ITTNOTIFY_VOID(memory_read) 722 #define __itt_memory_read_ptr ITTNOTIFY_NAME(memory_read) 723 #else /* INTEL_NO_ITTNOTIFY_API */ 724 #define __itt_memory_read(addr, size) 725 #define __itt_memory_read_ptr 0 726 #endif /* INTEL_NO_ITTNOTIFY_API */ 727 #else /* INTEL_NO_MACRO_BODY */ 728 #define __itt_memory_read_ptr 0 729 #endif /* INTEL_NO_MACRO_BODY */ 730 /** @endcond */ 731 732 /** 733 * @deprecated Legacy API 734 * @brief Inform the tool of memory accesses on writing 735 */ 736 void LIBITTAPI __itt_memory_write(void *addr, size_t size); 737 738 /** @cond exclude_from_documentation */ 739 #ifndef INTEL_NO_MACRO_BODY 740 #ifndef INTEL_NO_ITTNOTIFY_API 741 ITT_STUBV(LIBITTAPI, void, memory_write, (void *addr, size_t size)) 742 #define __itt_memory_write ITTNOTIFY_VOID(memory_write) 743 #define __itt_memory_write_ptr ITTNOTIFY_NAME(memory_write) 744 #else /* INTEL_NO_ITTNOTIFY_API */ 745 #define __itt_memory_write(addr, size) 746 #define __itt_memory_write_ptr 0 747 #endif /* INTEL_NO_ITTNOTIFY_API */ 748 #else /* INTEL_NO_MACRO_BODY */ 749 #define __itt_memory_write_ptr 0 750 #endif /* INTEL_NO_MACRO_BODY */ 751 /** @endcond */ 752 753 /** 754 * @deprecated Legacy API 755 * @brief Inform the tool of memory accesses on updating 756 */ 757 void LIBITTAPI __itt_memory_update(void *address, size_t size); 758 759 /** @cond exclude_from_documentation */ 760 #ifndef INTEL_NO_MACRO_BODY 761 #ifndef INTEL_NO_ITTNOTIFY_API 762 ITT_STUBV(LIBITTAPI, void, memory_update, (void *addr, size_t size)) 763 #define __itt_memory_update ITTNOTIFY_VOID(memory_update) 764 #define __itt_memory_update_ptr ITTNOTIFY_NAME(memory_update) 765 #else /* INTEL_NO_ITTNOTIFY_API */ 766 #define __itt_memory_update(addr, size) 767 #define __itt_memory_update_ptr 0 768 #endif /* INTEL_NO_ITTNOTIFY_API */ 769 #else /* INTEL_NO_MACRO_BODY */ 770 #define __itt_memory_update_ptr 0 771 #endif /* INTEL_NO_MACRO_BODY */ 772 /** @endcond */ 773 /** @} legacy_memory group */ 774 775 /** 776 * @defgroup legacy_state Thread and Object States 777 * @ingroup legacy 778 */ 779 780 /** @brief state type */ 781 typedef int __itt_state_t; 782 783 /** @cond exclude_from_documentation */ 784 typedef enum __itt_obj_state { 785 __itt_obj_state_err = 0, 786 __itt_obj_state_clr = 1, 787 __itt_obj_state_set = 2, 788 __itt_obj_state_use = 3 789 } __itt_obj_state_t; 790 791 typedef enum __itt_thr_state { 792 __itt_thr_state_err = 0, 793 __itt_thr_state_clr = 1, 794 __itt_thr_state_set = 2 795 } __itt_thr_state_t; 796 797 typedef enum __itt_obj_prop { 798 __itt_obj_prop_watch = 1, 799 __itt_obj_prop_ignore = 2, 800 __itt_obj_prop_sharable = 3 801 } __itt_obj_prop_t; 802 803 typedef enum __itt_thr_prop { 804 __itt_thr_prop_quiet = 1 805 } __itt_thr_prop_t; 806 /** @endcond */ 807 808 /** 809 * @deprecated Legacy API 810 * @brief managing thread and object states 811 */ 812 __itt_state_t LIBITTAPI __itt_state_get(void); 813 814 /** @cond exclude_from_documentation */ 815 #ifndef INTEL_NO_MACRO_BODY 816 #ifndef INTEL_NO_ITTNOTIFY_API 817 ITT_STUB(ITTAPI, __itt_state_t, state_get, (void)) 818 #define __itt_state_get ITTNOTIFY_DATA(state_get) 819 #define __itt_state_get_ptr ITTNOTIFY_NAME(state_get) 820 #else /* INTEL_NO_ITTNOTIFY_API */ 821 #define __itt_state_get(void) (__itt_state_t)0 822 #define __itt_state_get_ptr 0 823 #endif /* INTEL_NO_ITTNOTIFY_API */ 824 #else /* INTEL_NO_MACRO_BODY */ 825 #define __itt_state_get_ptr 0 826 #endif /* INTEL_NO_MACRO_BODY */ 827 /** @endcond */ 828 829 /** 830 * @deprecated Legacy API 831 * @brief managing thread and object states 832 */ 833 __itt_state_t LIBITTAPI __itt_state_set(__itt_state_t s); 834 835 /** @cond exclude_from_documentation */ 836 #ifndef INTEL_NO_MACRO_BODY 837 #ifndef INTEL_NO_ITTNOTIFY_API 838 ITT_STUB(ITTAPI, __itt_state_t, state_set, (__itt_state_t s)) 839 #define __itt_state_set ITTNOTIFY_DATA(state_set) 840 #define __itt_state_set_ptr ITTNOTIFY_NAME(state_set) 841 #else /* INTEL_NO_ITTNOTIFY_API */ 842 #define __itt_state_set(s) (__itt_state_t)0 843 #define __itt_state_set_ptr 0 844 #endif /* INTEL_NO_ITTNOTIFY_API */ 845 #else /* INTEL_NO_MACRO_BODY */ 846 #define __itt_state_set_ptr 0 847 #endif /* INTEL_NO_MACRO_BODY */ 848 /** @endcond */ 849 850 /** 851 * @deprecated Legacy API 852 * @brief managing thread and object modes 853 */ 854 __itt_thr_state_t LIBITTAPI __itt_thr_mode_set(__itt_thr_prop_t p, __itt_thr_state_t s); 855 856 /** @cond exclude_from_documentation */ 857 #ifndef INTEL_NO_MACRO_BODY 858 #ifndef INTEL_NO_ITTNOTIFY_API 859 ITT_STUB(ITTAPI, __itt_thr_state_t, thr_mode_set, (__itt_thr_prop_t p, __itt_thr_state_t s)) 860 #define __itt_thr_mode_set ITTNOTIFY_DATA(thr_mode_set) 861 #define __itt_thr_mode_set_ptr ITTNOTIFY_NAME(thr_mode_set) 862 #else /* INTEL_NO_ITTNOTIFY_API */ 863 #define __itt_thr_mode_set(p, s) (__itt_thr_state_t)0 864 #define __itt_thr_mode_set_ptr 0 865 #endif /* INTEL_NO_ITTNOTIFY_API */ 866 #else /* INTEL_NO_MACRO_BODY */ 867 #define __itt_thr_mode_set_ptr 0 868 #endif /* INTEL_NO_MACRO_BODY */ 869 /** @endcond */ 870 871 /** 872 * @deprecated Legacy API 873 * @brief managing thread and object modes 874 */ 875 __itt_obj_state_t LIBITTAPI __itt_obj_mode_set(__itt_obj_prop_t p, __itt_obj_state_t s); 876 877 /** @cond exclude_from_documentation */ 878 #ifndef INTEL_NO_MACRO_BODY 879 #ifndef INTEL_NO_ITTNOTIFY_API 880 ITT_STUB(ITTAPI, __itt_obj_state_t, obj_mode_set, (__itt_obj_prop_t p, __itt_obj_state_t s)) 881 #define __itt_obj_mode_set ITTNOTIFY_DATA(obj_mode_set) 882 #define __itt_obj_mode_set_ptr ITTNOTIFY_NAME(obj_mode_set) 883 #else /* INTEL_NO_ITTNOTIFY_API */ 884 #define __itt_obj_mode_set(p, s) (__itt_obj_state_t)0 885 #define __itt_obj_mode_set_ptr 0 886 #endif /* INTEL_NO_ITTNOTIFY_API */ 887 #else /* INTEL_NO_MACRO_BODY */ 888 #define __itt_obj_mode_set_ptr 0 889 #endif /* INTEL_NO_MACRO_BODY */ 890 /** @endcond */ 891 /** @} legacy_state group */ 892 893 /** 894 * @defgroup frames Frames 895 * @ingroup legacy 896 * Frames group 897 * @{ 898 */ 899 /** 900 * @brief opaque structure for frame identification 901 */ 902 typedef struct __itt_frame_t *__itt_frame; 903 904 /** 905 * @brief Create a global frame with given domain 906 */ 907 #if ITT_PLATFORM==ITT_PLATFORM_WIN 908 __itt_frame ITTAPI __itt_frame_createA(const char *domain); 909 __itt_frame ITTAPI __itt_frame_createW(const wchar_t *domain); 910 #if defined(UNICODE) || defined(_UNICODE) 911 # define __itt_frame_create __itt_frame_createW 912 # define __itt_frame_create_ptr __itt_frame_createW_ptr 913 #else /* UNICODE */ 914 # define __itt_frame_create __itt_frame_createA 915 # define __itt_frame_create_ptr __itt_frame_createA_ptr 916 #endif /* UNICODE */ 917 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 918 __itt_frame ITTAPI __itt_frame_create(const char *domain); 919 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 920 921 /** @cond exclude_from_documentation */ 922 #ifndef INTEL_NO_MACRO_BODY 923 #ifndef INTEL_NO_ITTNOTIFY_API 924 #if ITT_PLATFORM==ITT_PLATFORM_WIN 925 ITT_STUB(ITTAPI, __itt_frame, frame_createA, (const char *domain)) 926 ITT_STUB(ITTAPI, __itt_frame, frame_createW, (const wchar_t *domain)) 927 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 928 ITT_STUB(ITTAPI, __itt_frame, frame_create, (const char *domain)) 929 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 930 #if ITT_PLATFORM==ITT_PLATFORM_WIN 931 #define __itt_frame_createA ITTNOTIFY_DATA(frame_createA) 932 #define __itt_frame_createA_ptr ITTNOTIFY_NAME(frame_createA) 933 #define __itt_frame_createW ITTNOTIFY_DATA(frame_createW) 934 #define __itt_frame_createW_ptr ITTNOTIFY_NAME(frame_createW) 935 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 936 #define __itt_frame_create ITTNOTIFY_DATA(frame_create) 937 #define __itt_frame_create_ptr ITTNOTIFY_NAME(frame_create) 938 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 939 #else /* INTEL_NO_ITTNOTIFY_API */ 940 #if ITT_PLATFORM==ITT_PLATFORM_WIN 941 #define __itt_frame_createA(domain) 942 #define __itt_frame_createA_ptr 0 943 #define __itt_frame_createW(domain) 944 #define __itt_frame_createW_ptr 0 945 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 946 #define __itt_frame_create(domain) 947 #define __itt_frame_create_ptr 0 948 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 949 #endif /* INTEL_NO_ITTNOTIFY_API */ 950 #else /* INTEL_NO_MACRO_BODY */ 951 #if ITT_PLATFORM==ITT_PLATFORM_WIN 952 #define __itt_frame_createA_ptr 0 953 #define __itt_frame_createW_ptr 0 954 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 955 #define __itt_frame_create_ptr 0 956 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 957 #endif /* INTEL_NO_MACRO_BODY */ 958 /** @endcond */ 959 960 /** @brief Record a frame begin occurrence. */ 961 void ITTAPI __itt_frame_begin(__itt_frame frame); 962 /** @brief Record a frame end occurrence. */ 963 void ITTAPI __itt_frame_end (__itt_frame frame); 964 965 /** @cond exclude_from_documentation */ 966 #ifndef INTEL_NO_MACRO_BODY 967 #ifndef INTEL_NO_ITTNOTIFY_API 968 ITT_STUBV(ITTAPI, void, frame_begin, (__itt_frame frame)) 969 ITT_STUBV(ITTAPI, void, frame_end, (__itt_frame frame)) 970 #define __itt_frame_begin ITTNOTIFY_VOID(frame_begin) 971 #define __itt_frame_begin_ptr ITTNOTIFY_NAME(frame_begin) 972 #define __itt_frame_end ITTNOTIFY_VOID(frame_end) 973 #define __itt_frame_end_ptr ITTNOTIFY_NAME(frame_end) 974 #else /* INTEL_NO_ITTNOTIFY_API */ 975 #define __itt_frame_begin(frame) 976 #define __itt_frame_begin_ptr 0 977 #define __itt_frame_end(frame) 978 #define __itt_frame_end_ptr 0 979 #endif /* INTEL_NO_ITTNOTIFY_API */ 980 #else /* INTEL_NO_MACRO_BODY */ 981 #define __itt_frame_begin_ptr 0 982 #define __itt_frame_end_ptr 0 983 #endif /* INTEL_NO_MACRO_BODY */ 984 /** @endcond */ 985 /** @} frames group */ 986 987 #ifdef __cplusplus 988 } 989 #endif /* __cplusplus */ 990 991 #endif /* _LEGACY_ITTNOTIFY_H_ */ 992