1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request #334 from LudwigOrtmann/scheduler_clean_fix

scheduler: use proper inttype for runtime, use import instead of declaration, rename to runtime_ticks
This commit is contained in:
Oleg Hahm 2013-11-19 08:47:09 -08:00
commit 67d975a9aa
3 changed files with 14 additions and 10 deletions

View File

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

View File

@ -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 <clist.h>
#include <bitarithm.h>
#if SCHEDSTATISTICS
#include "hwtimer.h"
#endif
#define ENABLE_DEBUG (0)
#include <debug.h>
@ -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

View File

@ -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);
}
}