-/*
+/*
* Copyright Droids Corporation, Microb Technology, Eirbot (2005)
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
/** number of imbricated scheduler interruptions */
static volatile uint8_t nb_stacking=0;
-
+
uint8_t scheduler_disable_save(void)
{
uint8_t ret;
SCHED_INC_STAT(max_stacking);
return;
}
-
+
nb_stacking ++;
sei();
/* decrement current time (we know it is >0 if it is
* in SCHEDULER_EVENT_ACTIVE state */
g_tab_event[i].current_time --;
-
+
/* don't need to schedule now */
if ( g_tab_event[i].current_time != 0 ) {
sei();
continue;
}
-
+
/* time to schedule, but priority is too low,
* delay it */
if (g_tab_event[i].priority <= priority_running) {
/* schedule it */
g_tab_event[i].state = SCHEDULER_EVENT_SCHEDULED;
+ SCHED_INC_STAT2(task_scheduled, i);
sei();
/* insert it in the list (list is ordered).
/* harder : find the good place in list */
SLIST_FOREACH(e, &event_list, next) {
next_e = SLIST_NEXT(e, next);
- if (next_e == NULL ||
+ if (next_e == NULL ||
g_tab_event[i].priority >= next_e->priority) {
SLIST_INSERT_AFTER(e, &g_tab_event[i], next);
break;
if (e->state == SCHEDULER_EVENT_DELETING) {
e->state = SCHEDULER_EVENT_FREE;
}
-
+
/* end of schedule, mark it as active */
if (e->state == SCHEDULER_EVENT_SCHEDULED) {
e->state = SCHEDULER_EVENT_ACTIVE;
printf_P(PSTR("del_event: %"PRIu32"\r\n"), sched_stats.del_event);
printf_P(PSTR("max_stacking: %"PRIu32"\r\n"), sched_stats.max_stacking);
for (i=0; i<SCHEDULER_NB_MAX_EVENT; i++) {
- printf_P(PSTR("task_delayed[%d]: %"PRIu32"\r\n"), i,
- sched_stats.task_delayed[i]);
+ printf_P(PSTR("[%d] task_delayed: %"PRIu32", "
+ "task_scheduled: %"PRIu32"\r\n"),
+ i, sched_stats.task_delayed[i],sched_stats.task_scheduled[i]);
}
#endif /* CONFIG_MODULE_SCHEDULER_STATS */
}