116 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
#ifndef _VOS_PERF_H_
 | 
						|
#define _VOS_PERF_H_
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/*-----------------------------------------------------------------------------*/
 | 
						|
/* Including Files                                                             */
 | 
						|
/*-----------------------------------------------------------------------------*/
 | 
						|
#include <kwrap/nvt_type.h>
 | 
						|
 | 
						|
typedef UINT32 VOS_TICK; //tick unit: usec
 | 
						|
 | 
						|
void vos_perf_init(void *param);
 | 
						|
void vos_perf_exit(void);
 | 
						|
 | 
						|
/**
 | 
						|
    Get the current tick by updating the pointer value
 | 
						|
 | 
						|
    @param[in] p_tick  The tick pointer to be updated
 | 
						|
 | 
						|
	@return none
 | 
						|
*/
 | 
						|
void vos_perf_mark(VOS_TICK *p_tick); //tick unit: usec
 | 
						|
 | 
						|
/**
 | 
						|
    Calculate the duration between to VOS_TICK
 | 
						|
 | 
						|
    @note
 | 
						|
    -# The max valid duration is about 71.58 min. Measurement more than this value will get a wrong result.
 | 
						|
 | 
						|
    @param[in] t_begin  The counter tick at the beginning
 | 
						|
    @param[in] t_end    The counter tick at the end
 | 
						|
 | 
						|
    @return Return the duration from t_begin to t_end
 | 
						|
*/
 | 
						|
VOS_TICK vos_perf_duration(VOS_TICK t_begin, VOS_TICK t_end); //tick unit: usec
 | 
						|
 | 
						|
/**
 | 
						|
    Mark a tag in the perf list buffer
 | 
						|
 | 
						|
    A tag can contain a function name, a line number, and a custom value.
 | 
						|
 | 
						|
    @param[in] p_name       the mark name. Or use __func__ macro.
 | 
						|
    @param[in] line_no      the line number. Or use __LINE__ macro.
 | 
						|
    @param[in] cus_val      the custom defined value. E.g. a counter variable.
 | 
						|
 | 
						|
    Example:
 | 
						|
    @code
 | 
						|
    {
 | 
						|
		void func1(void)
 | 
						|
		{
 | 
						|
			vos_perf_list_mark(__func__, __LINE__, 0);
 | 
						|
			//do something
 | 
						|
			vos_perf_list_mark(__func__, __LINE__, 0);
 | 
						|
		}
 | 
						|
 | 
						|
		void func2(void)
 | 
						|
		{
 | 
						|
			vos_perf_list_mark(__func__, __LINE__, 0);
 | 
						|
			//do something
 | 
						|
			vos_perf_list_mark(__func__, __LINE__, 0);
 | 
						|
		}
 | 
						|
 | 
						|
		void main(void)
 | 
						|
		{
 | 
						|
	        vos_perf_list_reset(); //reset perf list
 | 
						|
 | 
						|
			func1();
 | 
						|
			func2();
 | 
						|
 | 
						|
			vos_perf_list_dump(); //dump perf list
 | 
						|
		}
 | 
						|
    }
 | 
						|
    @endcode
 | 
						|
 | 
						|
	Dump result:
 | 
						|
	===== vos_perf_list_dump_by_idx =====
 | 
						|
	[00] func1() ln 53 ts 12163639 df 0 cus 0
 | 
						|
	[01] func2() ln 60 ts 12163653 df 14 cus 0
 | 
						|
	[02] func2() ln 62 ts 12186673 df 23020 cus 0
 | 
						|
	[03] func1() ln 55 ts 12187887 df 1214 cus 0
 | 
						|
 | 
						|
	===== vos_perf_list_dump_by_name =====
 | 
						|
	Name      func1      func2
 | 
						|
	[00]   12163639          -
 | 
						|
	[01]          -   12163653
 | 
						|
	[02]          -   12186673
 | 
						|
	[03]   12187887          -
 | 
						|
	-----------------------------------------------
 | 
						|
	Diff      24248      23020
 | 
						|
 | 
						|
	Format meanings for vos_perf_list_dump_by_idx:
 | 
						|
	ln: line number
 | 
						|
	ts: timestamp tick (usec)
 | 
						|
	df: difference to the previous ts
 | 
						|
*/
 | 
						|
void vos_perf_list_mark(const CHAR *p_name, UINT32 line_no, UINT32 cus_val);
 | 
						|
 | 
						|
/**
 | 
						|
    Clean all data in the perf list buffer
 | 
						|
*/
 | 
						|
void vos_perf_list_reset(void);
 | 
						|
 | 
						|
/**
 | 
						|
    Dump all data in the perf list buffer
 | 
						|
*/
 | 
						|
void vos_perf_list_dump(void);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* _VOS_PERF_H_ */
 | 
						|
 |