nt9856x/code/vos/include/kwrap/perf.h
2023-03-28 15:07:53 +08:00

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