diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/kernel/cpuusage.c | 140 |
1 files changed, 70 insertions, 70 deletions
diff --git a/examples/kernel/cpuusage.c b/examples/kernel/cpuusage.c index 15666300b5..05c9b7a8c4 100644 --- a/examples/kernel/cpuusage.c +++ b/examples/kernel/cpuusage.c @@ -1,70 +1,70 @@ -#include <rtthread.h>
-#include <rthw.h>
-
-#define CPU_USAGE_CALC_TICK 10
-#define CPU_USAGE_LOOP 100
-
-static rt_uint8_t cpu_usage_major = 0, cpu_usage_minor= 0;
-static rt_uint32_t total_count = 0;
-
-static void cpu_usage_idle_hook()
-{
- rt_tick_t tick;
- rt_uint32_t count;
- volatile rt_uint32_t loop;
-
- if (total_count == 0)
- {
- /* get total count */
- rt_enter_critical();
- tick = rt_tick_get();
- while(rt_tick_get() - tick < CPU_USAGE_CALC_TICK)
- {
- total_count ++;
- loop = 0;
- while (loop < CPU_USAGE_LOOP) loop ++;
- }
- rt_exit_critical();
- }
-
- count = 0;
- /* get CPU usage */
- tick = rt_tick_get();
- while (rt_tick_get() - tick < CPU_USAGE_CALC_TICK)
- {
- count ++;
- loop = 0;
- while (loop < CPU_USAGE_LOOP) loop ++;
- }
-
- /* calculate major and minor */
- if (count < total_count)
- {
- count = total_count - count;
- cpu_usage_major = (count * 100) / total_count;
- cpu_usage_minor = ((count * 100) % total_count) * 100 / total_count;
- }
- else
- {
- total_count = count;
-
- /* no CPU usage */
- cpu_usage_major = 0;
- cpu_usage_minor = 0;
- }
-}
-
-void cpu_usage_get(rt_uint8_t *major, rt_uint8_t *minor)
-{
- RT_ASSERT(major != RT_NULL);
- RT_ASSERT(minor != RT_NULL);
-
- *major = cpu_usage_major;
- *minor = cpu_usage_minor;
-}
-
-void cpu_usage_init()
-{
- /* set idle thread hook */
- rt_thread_idle_sethook(cpu_usage_idle_hook);
-}
+#include <rtthread.h> +#include <rthw.h> + +#define CPU_USAGE_CALC_TICK 10 +#define CPU_USAGE_LOOP 100 + +static rt_uint8_t cpu_usage_major = 0, cpu_usage_minor= 0; +static rt_uint32_t total_count = 0; + +static void cpu_usage_idle_hook() +{ + rt_tick_t tick; + rt_uint32_t count; + volatile rt_uint32_t loop; + + if (total_count == 0) + { + /* get total count */ + rt_enter_critical(); + tick = rt_tick_get(); + while(rt_tick_get() - tick < CPU_USAGE_CALC_TICK) + { + total_count ++; + loop = 0; + while (loop < CPU_USAGE_LOOP) loop ++; + } + rt_exit_critical(); + } + + count = 0; + /* get CPU usage */ + tick = rt_tick_get(); + while (rt_tick_get() - tick < CPU_USAGE_CALC_TICK) + { + count ++; + loop = 0; + while (loop < CPU_USAGE_LOOP) loop ++; + } + + /* calculate major and minor */ + if (count < total_count) + { + count = total_count - count; + cpu_usage_major = (count * 100) / total_count; + cpu_usage_minor = ((count * 100) % total_count) * 100 / total_count; + } + else + { + total_count = count; + + /* no CPU usage */ + cpu_usage_major = 0; + cpu_usage_minor = 0; + } +} + +void cpu_usage_get(rt_uint8_t *major, rt_uint8_t *minor) +{ + RT_ASSERT(major != RT_NULL); + RT_ASSERT(minor != RT_NULL); + + *major = cpu_usage_major; + *minor = cpu_usage_minor; +} + +void cpu_usage_init() +{ + /* set idle thread hook */ + rt_thread_idle_sethook(cpu_usage_idle_hook); +} |
