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_ */
 | |
| 
 | 
