/****************************************************************************** 版权所有: 文件名称: rt_stat.h 文件版本: 01.01 创建作者: sunxi 创建日期: 2020-06-18 功能说明: 其它说明: 修改记录: */ #ifndef _RT_STAT_H #define _RT_STAT_H /*------------------------------- 头文件 -------------------------------------- */ /*------------------------------- 宏定义 -------------------------------------- */ #define RT_STAT_OTHER_NUM 8 #define RT_STAT_BIG_LOOP 0 /*------------------------------ 类型结构 ------------------------------------- */ struct rt_stat { const char * name; unsigned long min; unsigned long max; unsigned long sum; unsigned long cnt; }; /*------------------------------ 函数声明 ------------------------------------- */ extern struct rt_stat g_stat_other[8]; static inline void rt_stat_init(struct rt_stat *stat,const char *name) { stat->name = name; stat->cnt = 0; stat->sum = 0; stat->max = 0; stat->min = -1; } static inline void rt_stat_in(struct rt_stat *stat,unsigned long n) { stat->cnt++; stat->sum += n; if(n < stat->min) { stat->min = n; } if(n > stat->max) { stat->max = n; } } static inline void rt_stat_other_init(int index,const char *name) { struct rt_stat *stat = &g_stat_other[index]; stat->name = name; stat->cnt = 0; stat->sum = 0; stat->max = 0; stat->min = -1; } static inline void rt_stat_other_in(int index,unsigned long n) { struct rt_stat *stat = &g_stat_other[index]; stat->cnt++; stat->sum += n; if(n < stat->min) { stat->min = n; } if(n > stat->max) { stat->max = n; } } static inline void rt_stat_printf(struct rt_stat *stat) { unsigned long avg = 0; if(stat->cnt) { avg = stat->sum/stat->cnt; } rt_printf("%-24s%ld\t%ld\t%ld\t%-016ld%ld\r\n",stat->name,stat->min,stat->max,avg,stat->sum,stat->cnt); } void rt_stat_printf_q16(struct rt_stat *stat); int rt_stat_other_reset(void); int rt_stat_other_printf(void); #endif //_RT_STAT_H /*------------------------------ 文件结束 ------------------------------------- */