mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-03 22:08:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			184 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			184 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * Customer ID=11656; Build=0x5f626; Copyright (c) 2012 by Tensilica Inc. ALL RIGHTS RESERVED.
 | 
						|
 *
 | 
						|
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
						|
 * of this software and associated documentation files (the "Software"), to deal
 | 
						|
 * in the Software without restriction, including without limitation the rights
 | 
						|
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
						|
 * copies of the Software, and to permit persons to whom the Software is
 | 
						|
 * furnished to do so, subject to the following conditions:
 | 
						|
 *
 | 
						|
 * The above copyright notice and this permission notice shall be included in
 | 
						|
 * all copies or substantial portions of the Software.
 | 
						|
 *
 | 
						|
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						|
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
						|
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
						|
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
						|
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
						|
 * THE SOFTWARE.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __XT_PERFMON_H__
 | 
						|
#define __XT_PERFMON_H__
 | 
						|
 | 
						|
#include <xtensa/config/core.h>
 | 
						|
#include <xtensa/xt_perf_consts.h>
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
typedef int counter_id_t;
 | 
						|
 | 
						|
/* xt_perf_init
 | 
						|
 | 
						|
   Initialize the performance monitor library.  Ordinarily, this
 | 
						|
   function is called automatically via the .init section. If your
 | 
						|
   environment does not support the .init section, you will need to
 | 
						|
   call this function from your code.
 | 
						|
*/
 | 
						|
 | 
						|
extern void xt_perf_init(void);
 | 
						|
 | 
						|
/* xt_perf_enable
 | 
						|
 | 
						|
   Turn on the performance monitor. Ordinarily, counting is off by 
 | 
						|
   default. If you turn off performance monitor using xt_perf_disable or
 | 
						|
   by call to a function that disables performance monitor, you can turn
 | 
						|
   it on again via this function.
 | 
						|
*/
 | 
						|
 | 
						|
extern void xt_perf_enable(void);
 | 
						|
 | 
						|
/* xt_perf_disable
 | 
						|
 | 
						|
   Turn off the performance monitor. If you want to suspend counting 
 | 
						|
   events for a portion of your code, use this function and then call
 | 
						|
   xt_perf_enable when you want to start again.
 | 
						|
*/
 | 
						|
 | 
						|
extern void xt_perf_disable(void);
 | 
						|
 | 
						|
/* xt_perf_clear
 | 
						|
   
 | 
						|
   Disable performance monitor and clear all initialized hardware counters.
 | 
						|
   All counter ids are invalid after call to this function and all hardware
 | 
						|
   counters available for initialization.
 | 
						|
*/
 | 
						|
 | 
						|
extern void xt_perf_clear (void);
 | 
						|
 | 
						|
/* xt_perf_counters_num
 | 
						|
 | 
						|
   Returns number of free hardware performance counters. After call to xt_perf_clear
 | 
						|
   all counters are free and available for initialization. With each successful
 | 
						|
   xt_perf_init_counter/xt_perf_init_event call this number is decreasing until
 | 
						|
   no free counters available.
 | 
						|
*/
 | 
						|
 | 
						|
extern int xt_perf_counters_num (void);
 | 
						|
 | 
						|
/* xt_perf_init_counter32
 | 
						|
   
 | 
						|
   Setup 32 bit performance counter. This function disables performance monitor
 | 
						|
   if it was enabled.
 | 
						|
 | 
						|
   Returns zero based counter id on success or negative value if failed.
 | 
						|
   This function may fail if there is insufficient number of free hardware
 | 
						|
   counters or function arguments are invalid.
 | 
						|
 | 
						|
   The counter id returned on success can be used with xt_perf_reset_counter
 | 
						|
   and xt_perf_counter32 functions.
 | 
						|
 | 
						|
   <selector> - events group, one of XTPERF_CNT constants defined in
 | 
						|
                xt_perf_consts.h;
 | 
						|
   <mask> - events mask for selected group. Mask bit fields for each 
 | 
						|
            selector defined with XTPERF_MASK prefix in xt_perf_consts.h;
 | 
						|
   <trace_level> - specifies interrupt levels at which to count events;
 | 
						|
                   if trace_level is greater or equal to zero events are
 | 
						|
		   counted only at interrupt levels below or equal to
 | 
						|
		   trace_level; if trace_level is negative events are 
 | 
						|
		   counted only at (-trace_level) interrupt level or higher.
 | 
						|
*/
 | 
						|
    
 | 
						|
 | 
						|
extern counter_id_t xt_perf_init_counter32 ( unsigned int  selector,
 | 
						|
					     unsigned int  mask,
 | 
						|
					              int  trace_level);
 | 
						|
 | 
						|
/* xt_perf_init_counter64
 | 
						|
   
 | 
						|
   Setup 64 bit performance counter. Library emulates 64 bit counters by handling
 | 
						|
   profiling interrupt and recording overflows of 32 bit hardware counters.
 | 
						|
   This function disables performance monitor if it was enabled.
 | 
						|
 | 
						|
   Returns zero based counter id on success or negative value if failed.
 | 
						|
   This function may fail if there is insufficient number of free hardware
 | 
						|
   counters or function arguments are invalid.
 | 
						|
 | 
						|
   The counter id returned on success can be used with xt_perf_reset_counter
 | 
						|
   and xt_perf_counter64 functions.
 | 
						|
 | 
						|
   <selector> - events group, one of XTPERF_CNT constants defined in
 | 
						|
                xt_perf_consts.h;
 | 
						|
   <mask> - events mask for selected group. Mask bit fields for each 
 | 
						|
            selector defined with XTPERF_MASK prefix in xt_perf_consts.h;
 | 
						|
   <trace_level> - specifies interrupt levels at which to count events;
 | 
						|
                   if trace_level is greater or equal to zero events are
 | 
						|
		   counted only at interrupt levels below or equal to
 | 
						|
		   trace_level; if trace_level is negative events are 
 | 
						|
		   counted only at (-trace_level) interrupt level or higher.
 | 
						|
*/
 | 
						|
 | 
						|
extern counter_id_t xt_perf_init_counter64 ( unsigned int  selector,
 | 
						|
					     unsigned int  mask,
 | 
						|
					              int  trace_level);
 | 
						|
 | 
						|
/* xt_perf_reset_counter
 | 
						|
 | 
						|
   Reset counter value to 0.
 | 
						|
   Returns zero on success or non zero if failed.
 | 
						|
*/
 | 
						|
 | 
						|
extern int xt_perf_reset_counter (counter_id_t counter_id);
 | 
						|
 | 
						|
/* xt_perf_counter32
 | 
						|
 | 
						|
   Read 32 bit counter value.
 | 
						|
 | 
						|
   Returns zero if counter id is not valid.
 | 
						|
*/
 | 
						|
 | 
						|
extern unsigned int xt_perf_counter32 (counter_id_t counter_id);
 | 
						|
 | 
						|
/* xt_perf_counter64
 | 
						|
 | 
						|
   Read 64 bit counter value.
 | 
						|
 | 
						|
   Counter must be initialized using xt_perf_init_counter64 function.
 | 
						|
 | 
						|
   Returns zero if counter id is not valid.
 | 
						|
*/
 | 
						|
 | 
						|
extern unsigned long long xt_perf_counter64 (counter_id_t counter_id);
 | 
						|
 | 
						|
  /* xt_perf_overflow32
 | 
						|
 | 
						|
     Read overflow flag of 32 bit counter. This flag is dropped when
 | 
						|
     counter initialized or reset. Once counter overflows and wraps
 | 
						|
     around the flag is set and stays set until counter reset.
 | 
						|
 | 
						|
     Returns negative value if counter id is invalid, zero if counter
 | 
						|
     not overflowed, positive if in overflowed state.
 | 
						|
  */
 | 
						|
 | 
						|
extern int xt_perf_overflow32 (counter_id_t counter_id);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* __XT_PERFMON_H__ */
 |