diff --git a/core/include/sched.h b/core/include/sched.h index 4ca62ff7f7..1249bc81b2 100644 --- a/core/include/sched.h +++ b/core/include/sched.h @@ -90,7 +90,7 @@ typedef struct { unsigned int laststart; /*< Time stamp of the last time this thread was scheduled to run */ unsigned int schedules; /*< How often the thread was scheduled to run */ - unsigned int runtime; /*< The total runtime of this thread */ + unsigned long runtime_ticks; /*< The total runtime of this thread in ticks */ } schedstat; /** diff --git a/core/sched.c b/core/sched.c index 85c67a81d6..9a3de8b451 100644 --- a/core/sched.c +++ b/core/sched.c @@ -7,6 +7,8 @@ * Public License. See the file LICENSE in the top level directory for more * details. * + * TODO: setup dependency from SCHEDSTATISTICS to MODULE_HWTIMER + * * @ingroup kernel * @{ * @file @@ -21,6 +23,10 @@ #include #include +#if SCHEDSTATISTICS +#include "hwtimer.h" +#endif + #define ENABLE_DEBUG (0) #include @@ -51,7 +57,7 @@ void sched_init() sched_threads[i] = NULL; #if SCHEDSTATISTICS pidlist[i].laststart = 0; - pidlist[i].runtime = 0; + pidlist[i].runtime_ticks = 0; pidlist[i].schedules = 0; #endif } @@ -87,13 +93,11 @@ void sched_run() } -#if SCHEDSTATISTICS - /* TODO: setup dependency from SCHEDSTATISTICS to MODULE_HWTIMER */ - extern unsigned long hwtimer_now(void); - unsigned int time = hwtimer_now(); +#ifdef SCHEDSTATISTICS + unsigned long time = hwtimer_now(); if (my_active_thread && (pidlist[my_active_thread->pid].laststart)) { - pidlist[my_active_thread->pid].runtime += time - pidlist[my_active_thread->pid].laststart; + pidlist[my_active_thread->pid].runtime_ticks += time - pidlist[my_active_thread->pid].laststart; } #endif diff --git a/sys/ps/ps.c b/sys/ps/ps.c index 600dad0cbb..719eef75b7 100644 --- a/sys/ps/ps.c +++ b/sys/ps/ps.c @@ -54,16 +54,16 @@ void thread_print_all(void) const char *sname = state_names[statebit]; // get state name const char *queued = queued_name + (state & BIT0); // get queued flag int stacksz = p->stack_size; // get max used stack - double runtime = 0 / 0.0; + double runtime_ticks = 0 / 0.0; int switches = -1; #if SCHEDSTATISTICS - runtime = pidlist[i].runtime / (double) hwtimer_now() * 100; + runtime_ticks = pidlist[i].runtime_ticks / (double) hwtimer_now() * 100; switches = pidlist[i].schedules; #endif overall_stacksz += stacksz; stacksz -= thread_measure_stack_usage(p->stack_start); printf("\t%3u | %-21s| %-8s %.1s | %3i | %5i (%5i) %p | %6.3f%% | ", - p->pid, p->name, sname, queued, p->priority, p->stack_size, stacksz, p->stack_start, runtime); + p->pid, p->name, sname, queued, p->priority, p->stack_size, stacksz, p->stack_start, runtime_ticks); printf(" %8u\n", switches); } }