Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/3rdparty/ittnotify/include/legacy/ittnotify.h
16338 views
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_ */
1040
1041