diff --git a/miosix/kernel/scheduler/control/control_scheduler.cpp b/miosix/kernel/scheduler/control/control_scheduler.cpp index ee90b17ab0e863df726378590462b6756d4a4873..68ed478cbd5418bbda64879e59b0abbc322614ac 100644 --- a/miosix/kernel/scheduler/control/control_scheduler.cpp +++ b/miosix/kernel/scheduler/control/control_scheduler.cpp @@ -756,39 +756,37 @@ void ControlScheduler::IRQrecalculateAlfa() if(sumPriority==0) return; #ifndef SCHED_CONTROL_FIXED_POINT float base=1.0f/((float)sumPriority); - //for(Thread *it=threadList;it!=0;it=it->schedData.next) - for (auto it = activeThreads.begin() ; it != activeThreads.end() ; it++) + for(Thread *it=threadList;it!=0;it=it->schedData.next) { #ifdef ENABLE_FEEDFORWARD //Assign zero bursts to blocked threads - if((*it)->t->flags.isReady()) + if(it->flags.isReady()) { - (*it)->t->schedData.alfa=base*((float)((*it)->t->schedData.priority.get()+1)); + it->schedData.alfa=base*((float)(it->schedData.priority.get()+1)); } else { - (*it)->t->schedData.alfa=0; + it->schedData.alfa=0; } #else //ENABLE_FEEDFORWARD //Assign bursts irrespective of thread blocking status - (*it)->t->schedData.alfa=base*((float)((*it)->t->schedData.priority.get()+1)); + it->schedData.alfa=base*((float)(it->schedData.priority.get()+1)); #endif //ENABLE_FEEDFORWARD } #else //FIXED_POINT_MATH //Sum of all alfa is maximum value for an unsigned short unsigned int base=4096/sumPriority; - //for(Thread *it=threadList;it!=0;it=it->schedData.next) - for (auto it = activeThreads.begin() ; it != activeThreads.end() ; it++) + for(Thread *it=threadList;it!=0;it=it->schedData.next) { #ifdef ENABLE_FEEDFORWARD //Assign zero bursts to blocked threads - if((*it)->t->flags.isReady()) + if(it->flags.isReady()) { - (*it)->t->schedData.alfa=base*((*it)->t->schedData.priority.get()+1); + it->schedData.alfa=base*(it->schedData.priority.get()+1); } else { - (*it)->t->schedData.alfa=0; + it->schedData.alfa=0; } #else //ENABLE_FEEDFORWARD //Assign bursts irrespective of thread blocking status - (*it)->t->schedData.alfa=base*((*it)->t->schedData.priority.get()+1); + it->schedData.alfa=base*(it->schedData.priority.get()+1); #endif //ENABLE_FEEDFORWARD } #endif //FIXED_POINT_MATH diff --git a/miosix/kernel/scheduler/control/control_scheduler.h b/miosix/kernel/scheduler/control/control_scheduler.h index 398e113c90f5235ade916ff607b2ad26739a88f0..7b4f25257e1549994637cb9e109d411cd1e3039e 100755 --- a/miosix/kernel/scheduler/control/control_scheduler.h +++ b/miosix/kernel/scheduler/control/control_scheduler.h @@ -27,7 +27,9 @@ #ifndef CONTROL_SCHEDULER_H #define CONTROL_SCHEDULER_H + #define SCHED_CONTROL_MULTIBURST + #include "config/miosix_settings.h" #include "control_scheduler_types.h" #include "parameters.h"