diff options
| author | Shell <[email protected]> | 2024-06-04 00:06:41 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-06-04 00:06:41 +0800 |
| commit | 6ca327d8ce1d9c98204ab7c6d62123cfd5e12dcf (patch) | |
| tree | ed2cd81b10d249c22c07271d8f94085dbffd1c30 /include | |
| parent | e03342ff6b237d3ac6c38e133cb23b9770281f4a (diff) | |
[smart] add CPU/thread usage tracing config (#8947)
* [smart] add CPU usage tracing config
This patch introduces following features:
- Added CPU usage tracing functionality, enabled by default, for
applications like 'top'
- update time as smart independent
Signed-off-by: Shell <[email protected]>
* fixup: add ump idle thread
---------
Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'include')
| -rw-r--r-- | include/rtdef.h | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/include/rtdef.h b/include/rtdef.h index 3e48a137f6..26a1647ee6 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -701,6 +701,18 @@ enum #define RT_THREAD_CTRL_INFO 0x03 /**< Get thread information. */ #define RT_THREAD_CTRL_BIND_CPU 0x04 /**< Set thread bind cpu. */ +/** + * CPU usage statistics data + */ +struct rt_cpu_usage_stats +{ + rt_ubase_t user; + rt_ubase_t system; + rt_ubase_t irq; + rt_ubase_t idle; +}; +typedef struct rt_cpu_usage_stats *rt_cpu_usage_stats_t; + #ifdef RT_USING_SMP #define RT_CPU_DETACHED RT_CPUS_NR /**< The thread not running on cpu. */ @@ -714,15 +726,6 @@ enum #define RT_STOP_IPI 1 #endif /* RT_STOP_IPI */ -struct rt_cpu_usage_stats -{ - rt_uint64_t user; - rt_uint64_t system; - rt_uint64_t irq; - rt_uint64_t idle; -}; -typedef struct rt_cpu_usage_stats *rt_cpu_usage_stats_t; - #define _SCHEDULER_CONTEXT(fileds) fileds /** @@ -762,14 +765,21 @@ struct rt_cpu #ifdef RT_USING_SMART struct rt_spinlock spinlock; +#endif /* RT_USING_SMART */ +#ifdef RT_USING_CPU_USAGE_TRACER struct rt_cpu_usage_stats cpu_stat; -#endif +#endif /* RT_USING_CPU_USAGE_TRACER */ }; #else /* !RT_USING_SMP */ struct rt_cpu { struct rt_thread *current_thread; + struct rt_thread *idle_thread; + +#ifdef RT_USING_CPU_USAGE_TRACER + struct rt_cpu_usage_stats cpu_stat; +#endif /* RT_USING_CPU_USAGE_TRACER */ }; #endif /* RT_USING_SMP */ @@ -947,9 +957,6 @@ struct rt_thread void *susp_recycler; /**< suspended recycler on this thread */ void *robust_list; /**< pi lock, very carefully, it's a userspace list!*/ - rt_uint64_t user_time; - rt_uint64_t system_time; - #ifndef ARCH_MM_MMU lwp_sighandler_t signal_handler[32]; #else @@ -963,6 +970,11 @@ struct rt_thread #endif /* ARCH_MM_MMU */ #endif /* RT_USING_SMART */ +#ifdef RT_USING_CPU_USAGE_TRACER + rt_ubase_t user_time; /**< Ticks on user */ + rt_ubase_t system_time; /**< Ticks on system */ +#endif /* RT_USING_CPU_USAGE_TRACER */ + #ifdef RT_USING_MEM_PROTECTION void *mem_regions; #ifdef RT_USING_HW_STACK_GUARD @@ -976,7 +988,9 @@ struct rt_thread typedef struct rt_thread *rt_thread_t; #ifdef RT_USING_SMART -#define IS_USER_MODE(t) ((t)->user_ctx.ctx == RT_NULL) +#define LWP_IS_USER_MODE(t) ((t)->user_ctx.ctx == RT_NULL) +#else +#define LWP_IS_USER_MODE(t) (0) #endif /* RT_USING_SMART */ /**@}*/ |
