/** Is called by DoOneTimeInitializations and ITT_DoOneTimeInitialization in a protected (one-time) manner. Not to be invoked directly. **/ bool InitializeITT() { bool result = false; // Check if we are running under a performance or correctness tool bool t_checker = GetBoolEnvironmentVariable("KMP_FOR_TCHECK"); bool t_profiler = GetBoolEnvironmentVariable("KMP_FOR_TPROFILE"); __TBB_ASSERT(!(t_checker&&t_profiler), NULL); if ( t_checker || t_profiler ) { // Yes, we are in the tool mode. Try to load libittnotify library. result = FillDynamicLinks( LIBITTNOTIFY_NAME, ITT_HandlerTable, ITT_HandlerTable_size, 4 ); } if (result){ if ( t_checker ) { current_tool = ITC; } else if ( t_profiler ) { current_tool = ITP; } } else { // Clear away the proxy (dummy) handlers for (int i = 0; i < ITT_HandlerTable_size; i++) *ITT_HandlerTable[i].handler = NULL; current_tool = NONE; } PrintExtraVersionInfo( "ITT", result?"yes":"no" ); return result; }
/** Caller is responsible for ensuring this routine is called exactly once. */ void MallocInitializeITT() { bool success = false; // Check if we are running under control of VTune. if( GetBoolEnvironmentVariable("KMP_FOR_TCHECK") || GetBoolEnvironmentVariable("KMP_FOR_TPROFILE") ) { // Yes, we are under control of VTune. Check for libittnotify library. success = FillDynamicLinks( LIBITTNOTIFY_NAME, ITT_HandlerTable, 5 ); } if (!success){ for (int i = 0; i < 5; i++) *ITT_HandlerTable[i].handler = NULL; } }