1*ba62d9d3SAndroid Build Coastguard Worker /* 2*ba62d9d3SAndroid Build Coastguard Worker * Copyright (c) 2017, Intel Corporation 3*ba62d9d3SAndroid Build Coastguard Worker * 4*ba62d9d3SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*ba62d9d3SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*ba62d9d3SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*ba62d9d3SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*ba62d9d3SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*ba62d9d3SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*ba62d9d3SAndroid Build Coastguard Worker * 11*ba62d9d3SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be included 12*ba62d9d3SAndroid Build Coastguard Worker * in all copies or substantial portions of the Software. 13*ba62d9d3SAndroid Build Coastguard Worker * 14*ba62d9d3SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15*ba62d9d3SAndroid Build Coastguard Worker * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16*ba62d9d3SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17*ba62d9d3SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 18*ba62d9d3SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19*ba62d9d3SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20*ba62d9d3SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 21*ba62d9d3SAndroid Build Coastguard Worker */ 22*ba62d9d3SAndroid Build Coastguard Worker #ifndef CMRTLIB_AGNOSTIC_HARDWARE_CM_TIMER_H_ 23*ba62d9d3SAndroid Build Coastguard Worker #define CMRTLIB_AGNOSTIC_HARDWARE_CM_TIMER_H_ 24*ba62d9d3SAndroid Build Coastguard Worker 25*ba62d9d3SAndroid Build Coastguard Worker #include "cm_def_hw.h" 26*ba62d9d3SAndroid Build Coastguard Worker #include "cm_include.h" 27*ba62d9d3SAndroid Build Coastguard Worker 28*ba62d9d3SAndroid Build Coastguard Worker #if MDF_PROFILER_ENABLED 29*ba62d9d3SAndroid Build Coastguard Worker //! 30*ba62d9d3SAndroid Build Coastguard Worker //! CM Timer 31*ba62d9d3SAndroid Build Coastguard Worker //! 32*ba62d9d3SAndroid Build Coastguard Worker class CmTimer 33*ba62d9d3SAndroid Build Coastguard Worker { 34*ba62d9d3SAndroid Build Coastguard Worker public: 35*ba62d9d3SAndroid Build Coastguard Worker CmTimer(const char *functionName); 36*ba62d9d3SAndroid Build Coastguard Worker 37*ba62d9d3SAndroid Build Coastguard Worker ~CmTimer(); 38*ba62d9d3SAndroid Build Coastguard Worker 39*ba62d9d3SAndroid Build Coastguard Worker private: 40*ba62d9d3SAndroid Build Coastguard Worker void Start(); 41*ba62d9d3SAndroid Build Coastguard Worker 42*ba62d9d3SAndroid Build Coastguard Worker void Stop(); 43*ba62d9d3SAndroid Build Coastguard Worker 44*ba62d9d3SAndroid Build Coastguard Worker float GetTimeinMs(); 45*ba62d9d3SAndroid Build Coastguard Worker 46*ba62d9d3SAndroid Build Coastguard Worker void InsertEventStartFlag(); 47*ba62d9d3SAndroid Build Coastguard Worker 48*ba62d9d3SAndroid Build Coastguard Worker void InsertEventEndFlag(); 49*ba62d9d3SAndroid Build Coastguard Worker 50*ba62d9d3SAndroid Build Coastguard Worker uint64_t m_cycles; 51*ba62d9d3SAndroid Build Coastguard Worker 52*ba62d9d3SAndroid Build Coastguard Worker LARGE_INTEGER m_start; 53*ba62d9d3SAndroid Build Coastguard Worker 54*ba62d9d3SAndroid Build Coastguard Worker LARGE_INTEGER m_end; 55*ba62d9d3SAndroid Build Coastguard Worker 56*ba62d9d3SAndroid Build Coastguard Worker LARGE_INTEGER m_freq; 57*ba62d9d3SAndroid Build Coastguard Worker 58*ba62d9d3SAndroid Build Coastguard Worker char *m_funcName; 59*ba62d9d3SAndroid Build Coastguard Worker }; 60*ba62d9d3SAndroid Build Coastguard Worker 61*ba62d9d3SAndroid Build Coastguard Worker #endif // #if MDF_PROFILER_ENABLED 62*ba62d9d3SAndroid Build Coastguard Worker 63*ba62d9d3SAndroid Build Coastguard Worker #endif // #ifndef CMRTLIB_AGNOSTIC_HARDWARE_CM_TIMER_H_ 64