summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/rtdef.h31
-rw-r--r--include/rthw.h2
-rw-r--r--include/rtthread.h4
3 files changed, 29 insertions, 8 deletions
diff --git a/include/rtdef.h b/include/rtdef.h
index ad875be194..560d4c08c2 100644
--- a/include/rtdef.h
+++ b/include/rtdef.h
@@ -726,11 +726,11 @@ enum
#define RT_THREAD_CTRL_INFO 0x03 /**< Get thread information. */
#define RT_THREAD_CTRL_BIND_CPU 0x04 /**< Set thread bind cpu. */
-#ifdef RT_USING_SMP
-
#define RT_CPU_DETACHED RT_CPUS_NR /**< The thread not running on cpu. */
#define RT_CPU_MASK ((1 << RT_CPUS_NR) - 1) /**< All CPUs mask bit. */
+#ifdef RT_USING_SMP
+
#ifndef RT_SCHEDULE_IPI
#define RT_SCHEDULE_IPI 0
#endif /* RT_SCHEDULE_IPI */
@@ -739,6 +739,17 @@ enum
#define RT_STOP_IPI 1
#endif /* RT_STOP_IPI */
+#endif /* RT_USING_SMP */
+
+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;
+
/**
* CPUs definitions
*
@@ -746,7 +757,7 @@ enum
struct rt_cpu
{
struct rt_thread *current_thread;
-
+ struct rt_thread *idle_thread;
rt_uint16_t irq_nest;
rt_uint8_t irq_switch_flag;
@@ -760,9 +771,11 @@ struct rt_cpu
#endif /* RT_THREAD_PRIORITY_MAX > 32 */
rt_tick_t tick;
+#ifdef RT_USING_SMART
+ struct rt_cpu_usage_stats cpu_stat;
+#endif
};
-
-#endif /* RT_USING_SMP */
+typedef struct rt_cpu *rt_cpu_t;
struct rt_thread;
@@ -936,6 +949,9 @@ struct rt_thread
int exit_request;
int tid;
+ rt_uint64_t user_time;
+ rt_uint64_t system_time;
+
#ifndef ARCH_MM_MMU
lwp_sighandler_t signal_handler[32];
#else
@@ -948,11 +964,14 @@ struct rt_thread
int *clear_child_tid;
#endif /* ARCH_MM_MMU */
#endif /* RT_USING_SMART */
-
rt_ubase_t user_data; /**< private user data beyond this thread */
};
typedef struct rt_thread *rt_thread_t;
+#ifdef RT_USING_SMART
+#define IS_USER_MODE(t) ((t)->user_ctx.ctx == RT_NULL)
+#endif /* RT_USING_SMART */
+
/**@}*/
/**
diff --git a/include/rthw.h b/include/rthw.h
index ed512ac14f..60f97f2329 100644
--- a/include/rthw.h
+++ b/include/rthw.h
@@ -127,6 +127,8 @@ void rt_hw_local_irq_enable(rt_base_t level);
#define rt_hw_interrupt_disable rt_cpus_lock
#define rt_hw_interrupt_enable rt_cpus_unlock
#else
+#define rt_hw_local_irq_disable rt_hw_interrupt_disable
+#define rt_hw_local_irq_enable rt_hw_interrupt_enable
rt_base_t rt_hw_interrupt_disable(void);
void rt_hw_interrupt_enable(rt_base_t level);
#endif /*RT_USING_SMP*/
diff --git a/include/rtthread.h b/include/rtthread.h
index 610115134c..883af363b2 100644
--- a/include/rtthread.h
+++ b/include/rtthread.h
@@ -624,11 +624,11 @@ void rt_interrupt_leave(void);
rt_base_t rt_cpus_lock(void);
void rt_cpus_unlock(rt_base_t level);
+#endif /* RT_USING_SMP */
+
struct rt_cpu *rt_cpu_self(void);
struct rt_cpu *rt_cpu_index(int index);
-#endif /* RT_USING_SMP */
-
/*
* the number of nested interrupts.
*/