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

source code of openmp/runtime/src/thirdparty/ittnotify/legacy/ittnotify.h