|
@@ -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 */
|
|
|
|
|
|
/**@}*/
|