tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ittnotify.h (39199B)


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