1e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* 2e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org This file is provided under a dual BSD/GPLv2 license. When using or 3e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org redistributing this file, you may do so under either license. 4e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 5e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org GPL LICENSE SUMMARY 6e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 7e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org Copyright(c) 2005-2012 Intel Corporation. All rights reserved. 8e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 9e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org This program is free software; you can redistribute it and/or modify 10e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org it under the terms of version 2 of the GNU General Public License as 11e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org published by the Free Software Foundation. 12e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 13e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org This program is distributed in the hope that it will be useful, but 14e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org WITHOUT ANY WARRANTY; without even the implied warranty of 15e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org General Public License for more details. 17e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 18e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org You should have received a copy of the GNU General Public License 19e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org along with this program; if not, write to the Free Software 20e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 21e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org The full GNU General Public License is included in this distribution 22e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org in the file called LICENSE.GPL. 23e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 24e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org Contact Information: 25e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/ 26e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 27e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org BSD LICENSE 28e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 29e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org Copyright(c) 2005-2012 Intel Corporation. All rights reserved. 30e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org All rights reserved. 31e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 32e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org Redistribution and use in source and binary forms, with or without 33e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org modification, are permitted provided that the following conditions 34e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org are met: 35e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 36e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org * Redistributions of source code must retain the above copyright 37e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org notice, this list of conditions and the following disclaimer. 38e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org * Redistributions in binary form must reproduce the above copyright 39e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org notice, this list of conditions and the following disclaimer in 40e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org the documentation and/or other materials provided with the 41e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org distribution. 42e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org * Neither the name of Intel Corporation nor the names of its 43e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org contributors may be used to endorse or promote products derived 44e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org from this software without specific prior written permission. 45e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 46e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 47e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 48e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 49e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 50e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 51e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 52e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 53e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 54e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 55e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 56e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 57e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org*/ 58e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef _ITTNOTIFY_CONFIG_H_ 59e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define _ITTNOTIFY_CONFIG_H_ 60e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 61e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/** @cond exclude_from_documentation */ 62e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_OS_WIN 63e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_OS_WIN 1 64e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_OS_WIN */ 65e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 66e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_OS_LINUX 67e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_OS_LINUX 2 68e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_OS_LINUX */ 69e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 70e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_OS_MAC 71e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_OS_MAC 3 72e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_OS_MAC */ 73e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 74e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_OS 75e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if defined WIN32 || defined _WIN32 76e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_OS ITT_OS_WIN 77e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# elif defined( __APPLE__ ) && defined( __MACH__ ) 78e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_OS ITT_OS_MAC 79e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else 80e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_OS ITT_OS_LINUX 81e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif 82e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_OS */ 83e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 84e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_PLATFORM_WIN 85e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_PLATFORM_WIN 1 86e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM_WIN */ 87e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 88e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_PLATFORM_POSIX 89e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_PLATFORM_POSIX 2 90e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM_POSIX */ 91e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 92e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_PLATFORM 93e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if ITT_OS==ITT_OS_WIN 94e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_PLATFORM ITT_PLATFORM_WIN 95e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else 96e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_PLATFORM ITT_PLATFORM_POSIX 97e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif /* _WIN32 */ 98e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM */ 99e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 100e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if defined(_UNICODE) && !defined(UNICODE) 101e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define UNICODE 102e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif 103e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 104e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <stddef.h> 105e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if ITT_PLATFORM==ITT_PLATFORM_WIN 106e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <tchar.h> 107e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 108e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <stdint.h> 109e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if defined(UNICODE) || defined(_UNICODE) 110e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <wchar.h> 111e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* UNICODE || _UNICODE */ 112e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 113e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 114e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef CDECL 115e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if ITT_PLATFORM==ITT_PLATFORM_WIN 116e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define CDECL __cdecl 117e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 118e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ 119e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define CDECL /* not actual on x86_64 platform */ 120e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else /* _M_X64 || _M_AMD64 || __x86_64__ */ 121e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define CDECL __attribute__ ((cdecl)) 122e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif /* _M_X64 || _M_AMD64 || __x86_64__ */ 123e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 124e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* CDECL */ 125e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 126e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef STDCALL 127e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if ITT_PLATFORM==ITT_PLATFORM_WIN 128e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define STDCALL __stdcall 129e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 130e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ 131e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define STDCALL /* not supported on x86_64 platform */ 132e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else /* _M_X64 || _M_AMD64 || __x86_64__ */ 133e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define STDCALL __attribute__ ((stdcall)) 134e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif /* _M_X64 || _M_AMD64 || __x86_64__ */ 135e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 136e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* STDCALL */ 137e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 138e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITTAPI CDECL 139e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define LIBITTAPI CDECL 140e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 141e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* TODO: Temporary for compatibility! */ 142e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITTAPI_CALL CDECL 143e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define LIBITTAPI_CALL CDECL 144e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 145e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if ITT_PLATFORM==ITT_PLATFORM_WIN 146e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* use __forceinline (VC++ specific) */ 147e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_INLINE __forceinline 148e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_INLINE_ATTRIBUTE /* nothing */ 149e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 150e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* 151e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org * Generally, functions are not inlined unless optimization is specified. 152e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org * For functions declared inline, this attribute inlines the function even 153e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org * if no optimization level was specified. 154e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org */ 155e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifdef __STRICT_ANSI__ 156e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_INLINE static 157e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* __STRICT_ANSI__ */ 158e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_INLINE static inline 159e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* __STRICT_ANSI__ */ 160e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_INLINE_ATTRIBUTE __attribute__ ((always_inline)) 161e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 162e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/** @endcond */ 163e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 164e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_ARCH_IA32 165e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_ARCH_IA32 1 166e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_ARCH_IA32 */ 167e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 168e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_ARCH_IA32E 169e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_ARCH_IA32E 2 170e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_ARCH_IA32E */ 171e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 172e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_ARCH_IA64 173e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_ARCH_IA64 3 174e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_ARCH_IA64 */ 175e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 176e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_ARCH 177e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# if defined _M_X64 || defined _M_AMD64 || defined __x86_64__ 178e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_ARCH ITT_ARCH_IA32E 179e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# elif defined _M_IA64 || defined __ia64 180e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_ARCH ITT_ARCH_IA64 181e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# else 182e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_ARCH ITT_ARCH_IA32 183e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# endif 184e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif 185e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 186e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifdef __cplusplus 187e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_EXTERN_C extern "C" 188e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else 189e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org# define ITT_EXTERN_C /* nothing */ 190e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* __cplusplus */ 191e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 192e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_TO_STR_AUX(x) #x 193e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_TO_STR(x) ITT_TO_STR_AUX(x) 194e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 195e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __ITT_BUILD_ASSERT(expr, suffix) do { static char __itt_build_check_##suffix[(expr) ? 1 : -1]; __itt_build_check_##suffix[0] = 0; } while(0) 196e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define _ITT_BUILD_ASSERT(expr, suffix) __ITT_BUILD_ASSERT((expr), suffix) 197e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_BUILD_ASSERT(expr) _ITT_BUILD_ASSERT((expr), __LINE__) 198e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 199e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define ITT_MAGIC { 0xED, 0xAB, 0xAB, 0xEC, 0x0D, 0xEE, 0xDA, 0x30 } 200e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 201e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* Replace with snapshot date YYYYMMDD for promotion build. */ 202e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define API_VERSION_BUILD 20111111 203e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 204e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef API_VERSION_NUM 205e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define API_VERSION_NUM 0.0.0 206e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* API_VERSION_NUM */ 207e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 208e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define API_VERSION "ITT-API-Version " ITT_TO_STR(API_VERSION_NUM) " (" ITT_TO_STR(API_VERSION_BUILD) ")" 209e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 210e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* OS communication functions */ 211e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if ITT_PLATFORM==ITT_PLATFORM_WIN 212e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <windows.h> 213e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef HMODULE lib_t; 214e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef DWORD TIDT; 215e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef CRITICAL_SECTION mutex_t; 216e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define MUTEX_INITIALIZER { 0 } 217e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define strong_alias(name, aliasname) /* empty for Windows */ 218e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 219e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <dlfcn.h> 220e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if defined(UNICODE) || defined(_UNICODE) 221e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <wchar.h> 222e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* UNICODE */ 223e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef _GNU_SOURCE 224e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define _GNU_SOURCE 1 /* need for PTHREAD_MUTEX_RECURSIVE */ 225e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* _GNU_SOURCE */ 226e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include <pthread.h> 227e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef void* lib_t; 228e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef pthread_t TIDT; 229e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef pthread_mutex_t mutex_t; 230e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER 231e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define _strong_alias(name, aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name))); 232e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define strong_alias(name, aliasname) _strong_alias(name, aliasname) 233e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 234e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 235e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if ITT_PLATFORM==ITT_PLATFORM_WIN 236e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_get_proc(lib, name) GetProcAddress(lib, name) 237e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_mutex_init(mutex) InitializeCriticalSection(mutex) 238e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_mutex_lock(mutex) EnterCriticalSection(mutex) 239e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_mutex_unlock(mutex) LeaveCriticalSection(mutex) 240e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_load_lib(name) LoadLibraryA(name) 241e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_unload_lib(handle) FreeLibrary(handle) 242e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_system_error() (int)GetLastError() 243e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrcmp(s1, s2) lstrcmpA(s1, s2) 244e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrlen(s) lstrlenA(s) 245e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrcpyn(s1, s2, l) lstrcpynA(s1, s2, l) 246e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrdup(s) _strdup(s) 247e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_thread_id() GetCurrentThreadId() 248e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_thread_yield() SwitchToThread() 249e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_SIMPLE_INIT 250e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgITT_INLINE int __itt_interlocked_increment(volatile long* ptr) ITT_INLINE_ATTRIBUTE; 251e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgITT_INLINE int __itt_interlocked_increment(volatile long* ptr) 252e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 253e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org return InterlockedIncrement(ptr); 254e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 255e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_SIMPLE_INIT */ 256e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* ITT_PLATFORM!=ITT_PLATFORM_WIN */ 257e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_get_proc(lib, name) dlsym(lib, name) 258e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_mutex_init(mutex) \ 259e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org { \ 260e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org pthread_mutexattr_t mutex_attr; \ 261e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org int error_code = pthread_mutexattr_init(&mutex_attr); \ 262e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (error_code) \ 263e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_report_error(__itt_error_system, "pthread_mutexattr_init", error_code); \ 264e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org error_code = pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE); \ 265e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (error_code) \ 266e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_report_error(__itt_error_system, "pthread_mutexattr_settype", error_code); \ 267e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org error_code = pthread_mutex_init(mutex, &mutex_attr); \ 268e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (error_code) \ 269e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_report_error(__itt_error_system, "pthread_mutex_init", error_code); \ 270e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org error_code = pthread_mutexattr_destroy(&mutex_attr); \ 271e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (error_code) \ 272e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_report_error(__itt_error_system, "pthread_mutexattr_destroy", error_code); \ 273e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } 274e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_mutex_lock(mutex) pthread_mutex_lock(mutex) 275e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_mutex_unlock(mutex) pthread_mutex_unlock(mutex) 276e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_load_lib(name) dlopen(name, RTLD_LAZY) 277e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_unload_lib(handle) dlclose(handle) 278e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_system_error() errno 279e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrcmp(s1, s2) strcmp(s1, s2) 280e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrlen(s) strlen(s) 281e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrcpyn(s1, s2, l) strncpy(s1, s2, l) 282e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_fstrdup(s) strdup(s) 283e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_thread_id() pthread_self() 284e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __itt_thread_yield() sched_yield() 285e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if ITT_ARCH==ITT_ARCH_IA64 286e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifdef __INTEL_COMPILER 287e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define __TBB_machine_fetchadd4(addr, val) __fetchadd4_acq((void *)addr, val) 288e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* __INTEL_COMPILER */ 289e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/* TODO: Add Support for not Intel compilers for IA64 */ 290e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* __INTEL_COMPILER */ 291e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* ITT_ARCH!=ITT_ARCH_IA64 */ 292e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/*ITT_INLINE int __TBB_machine_fetchadd4(volatile void* ptr, long addend) ITT_INLINE_ATTRIBUTE; 293e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgITT_INLINE int __TBB_machine_fetchadd4(volatile void* ptr, long addend) 294e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 295e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org int result; 296e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __asm__ __volatile__("lock\nxaddl %0,%1" 297e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org : "=r"(result),"=m"(*(long*)ptr) 298e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org : "0"(addend), "m"(*(long*)ptr) 299e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org : "memory"); 300e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org return result; 301e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 302e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org*/ 303e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_ARCH==ITT_ARCH_IA64 */ 304e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#ifndef ITT_SIMPLE_INIT 305e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org/*ITT_INLINE int __itt_interlocked_increment(volatile long* ptr) ITT_INLINE_ATTRIBUTE; 306e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgITT_INLINE int __itt_interlocked_increment(volatile long* ptr) 307e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 308e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org return __TBB_machine_fetchadd4(ptr, 1) + 1; 309e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 310e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org*/ 311e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_SIMPLE_INIT */ 312e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */ 313e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 314e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef enum { 315e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_collection_normal = 0, 316e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_collection_paused = 1 317e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} __itt_collection_state; 318e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 319e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef enum { 320e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_thread_normal = 0, 321e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_thread_ignored = 1 322e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} __itt_thread_state; 323e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 324e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#pragma pack(push, 8) 325e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 326e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef struct ___itt_thread_info 327e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 328e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org const char* nameA; /*!< Copy of original name in ASCII. */ 329e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#if defined(UNICODE) || defined(_UNICODE) 330e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org const wchar_t* nameW; /*!< Copy of original name in UNICODE. */ 331e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#else /* UNICODE || _UNICODE */ 332e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void* nameW; 333e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* UNICODE || _UNICODE */ 334e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org TIDT tid; 335e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_thread_state state; /*!< Thread state (paused or normal) */ 336e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org int extra1; /*!< Reserved to the runtime */ 337e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void* extra2; /*!< Reserved to the runtime */ 338e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org struct ___itt_thread_info* next; 339e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} __itt_thread_info; 340e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 341e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#include "ittnotify_types.h" /* For __itt_group_id definition */ 342e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 343e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef struct ___itt_api_info_20101001 344e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 345e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org const char* name; 346e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void** func_ptr; 347e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void* init_func; 348e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_group_id group; 349e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} __itt_api_info_20101001; 350e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 351e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef struct ___itt_api_info 352e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 353e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org const char* name; 354e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void** func_ptr; 355e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void* init_func; 356e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void* null_func; 357e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_group_id group; 358e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} __itt_api_info; 359e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 360e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgstruct ___itt_domain; 361e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgstruct ___itt_string_handle; 362e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 363e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.orgtypedef struct ___itt_global 364e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org{ 365e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org unsigned char magic[8]; 366e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org unsigned long version_major; 367e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org unsigned long version_minor; 368e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org unsigned long version_build; 369e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org volatile long api_initialized; 370e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org volatile long mutex_initialized; 371e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org volatile long atomic_counter; 372e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org mutex_t mutex; 373e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org lib_t lib; 374e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org void* error_handler; 375e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org const char** dll_path_ptr; 376e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_api_info* api_list_ptr; 377e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org struct ___itt_global* next; 378e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org /* Joinable structures below */ 379e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_thread_info* thread_list; 380e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org struct ___itt_domain* domain_list; 381e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org struct ___itt_string_handle* string_list; 382e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org __itt_collection_state state; 383e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} __itt_global; 384e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 385e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#pragma pack(pop) 386e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 387e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define NEW_THREAD_INFO_W(gptr,h,h_tail,t,s,n) { \ 388e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h = (__itt_thread_info*)malloc(sizeof(__itt_thread_info)); \ 389e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h != NULL) { \ 390e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->tid = t; \ 391e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameA = NULL; \ 392e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameW = n ? _wcsdup(n) : NULL; \ 393e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->state = s; \ 394e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra1 = 0; /* reserved */ \ 395e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra2 = NULL; /* reserved */ \ 396e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->next = NULL; \ 397e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h_tail == NULL) \ 398e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (gptr)->thread_list = h; \ 399e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org else \ 400e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h_tail->next = h; \ 401e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } \ 402e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 403e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 404e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define NEW_THREAD_INFO_A(gptr,h,h_tail,t,s,n) { \ 405e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h = (__itt_thread_info*)malloc(sizeof(__itt_thread_info)); \ 406e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h != NULL) { \ 407e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->tid = t; \ 408e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameA = n ? __itt_fstrdup(n) : NULL; \ 409e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameW = NULL; \ 410e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->state = s; \ 411e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra1 = 0; /* reserved */ \ 412e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra2 = NULL; /* reserved */ \ 413e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->next = NULL; \ 414e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h_tail == NULL) \ 415e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (gptr)->thread_list = h; \ 416e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org else \ 417e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h_tail->next = h; \ 418e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } \ 419e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 420e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 421e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define NEW_DOMAIN_W(gptr,h,h_tail,name) { \ 422e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h = (__itt_domain*)malloc(sizeof(__itt_domain)); \ 423e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h != NULL) { \ 424e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->flags = 0; /* domain is disabled by default */ \ 425e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameA = NULL; \ 426e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameW = name ? _wcsdup(name) : NULL; \ 427e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra1 = 0; /* reserved */ \ 428e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra2 = NULL; /* reserved */ \ 429e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->next = NULL; \ 430e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h_tail == NULL) \ 431e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (gptr)->domain_list = h; \ 432e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org else \ 433e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h_tail->next = h; \ 434e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } \ 435e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 436e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 437e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define NEW_DOMAIN_A(gptr,h,h_tail,name) { \ 438e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h = (__itt_domain*)malloc(sizeof(__itt_domain)); \ 439e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h != NULL) { \ 440e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->flags = 0; /* domain is disabled by default */ \ 441e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameA = name ? __itt_fstrdup(name) : NULL; \ 442e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->nameW = NULL; \ 443e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra1 = 0; /* reserved */ \ 444e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra2 = NULL; /* reserved */ \ 445e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->next = NULL; \ 446e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h_tail == NULL) \ 447e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (gptr)->domain_list = h; \ 448e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org else \ 449e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h_tail->next = h; \ 450e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } \ 451e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 452e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 453e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define NEW_STRING_HANDLE_W(gptr,h,h_tail,name) { \ 454e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h = (__itt_string_handle*)malloc(sizeof(__itt_string_handle)); \ 455e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h != NULL) { \ 456e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->strA = NULL; \ 457e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->strW = name ? _wcsdup(name) : NULL; \ 458e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra1 = 0; /* reserved */ \ 459e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra2 = NULL; /* reserved */ \ 460e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->next = NULL; \ 461e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h_tail == NULL) \ 462e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (gptr)->string_list = h; \ 463e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org else \ 464e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h_tail->next = h; \ 465e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } \ 466e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 467e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 468e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#define NEW_STRING_HANDLE_A(gptr,h,h_tail,name) { \ 469e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h = (__itt_string_handle*)malloc(sizeof(__itt_string_handle)); \ 470e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h != NULL) { \ 471e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->strA = name ? __itt_fstrdup(name) : NULL; \ 472e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->strW = NULL; \ 473e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra1 = 0; /* reserved */ \ 474e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->extra2 = NULL; /* reserved */ \ 475e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h->next = NULL; \ 476e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org if (h_tail == NULL) \ 477e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org (gptr)->string_list = h; \ 478e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org else \ 479e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org h_tail->next = h; \ 480e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org } \ 481e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org} 482e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 483e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org#endif /* _ITTNOTIFY_CONFIG_H_ */ 484e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 485