diff options
Diffstat (limited to 'os/kernel/src')
-rw-r--r-- | os/kernel/src/chschd.c | 17 | ||||
-rw-r--r-- | os/kernel/src/chsys.c | 2 | ||||
-rw-r--r-- | os/kernel/src/chthreads.c | 2 |
3 files changed, 11 insertions, 10 deletions
diff --git a/os/kernel/src/chschd.c b/os/kernel/src/chschd.c index 7c65e3fd6..150169481 100644 --- a/os/kernel/src/chschd.c +++ b/os/kernel/src/chschd.c @@ -39,7 +39,7 @@ void scheduler_init(void) { queue_init(&rlist.r_queue); rlist.r_prio = NOPRIO; -#if CH_USE_ROUNDROBIN +#if CH_TIME_QUANTUM > 0 rlist.r_preempt = CH_TIME_QUANTUM; #endif } @@ -83,7 +83,7 @@ void chSchGoSleepS(tstate_t newstate) { (otp = currp)->p_state = newstate; (currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR; -#if CH_USE_ROUNDROBIN +#if CH_TIME_QUANTUM > 0 rlist.r_preempt = CH_TIME_QUANTUM; #endif chDbgTrace(otp, currp); @@ -176,7 +176,7 @@ void chSchWakeupS(Thread *ntp, msg_t msg) { else { Thread *otp = currp; chSchReadyI(otp); -#if CH_USE_ROUNDROBIN +#if CH_TIME_QUANTUM > 0 rlist.r_preempt = CH_TIME_QUANTUM; #endif (currp = ntp)->p_state = PRCURR; @@ -197,7 +197,7 @@ void chSchDoRescheduleI(void) { /* Pick the first thread from the ready queue and makes it current.*/ (currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR; chSchReadyI(otp); -#if CH_USE_ROUNDROBIN +#if CH_TIME_QUANTUM > 0 rlist.r_preempt = CH_TIME_QUANTUM; #endif chDbgTrace(otp, currp); @@ -229,7 +229,7 @@ void chSchRescheduleS(void) { bool_t chSchIsRescRequiredExI(void) { tprio_t p1 = firstprio(&rlist.r_queue); tprio_t p2 = currp->p_prio; -#if CH_USE_ROUNDROBIN +#if CH_TIME_QUANTUM > 0 /* If the running thread has not reached its time quantum, reschedule only * if the first thread on the ready queue has a higher priority. * Otherwise, if the running thread has used up its time quantum, reschedule @@ -242,7 +242,11 @@ bool_t chSchIsRescRequiredExI(void) { #endif } -#if CH_USE_ROUNDROBIN +/** + * @brief Yields the time slot. + * @details Yields the CPU control to the next thread in the ready list with + * equal priority, if any. + */ void chSchDoYieldS(void) { if (chSchCanYieldS()) { @@ -269,6 +273,5 @@ void chSchDoYieldS(void) { chSysSwitchI(otp, currp); } } -#endif /* CH_USE_ROUNDROBIN */ /** @} */ diff --git a/os/kernel/src/chsys.c b/os/kernel/src/chsys.c index 326699ea0..06fdbc822 100644 --- a/os/kernel/src/chsys.c +++ b/os/kernel/src/chsys.c @@ -98,7 +98,7 @@ void chSysInit(void) { */ void chSysTimerHandlerI(void) { -#if CH_USE_ROUNDROBIN +#if CH_TIME_QUANTUM > 0 /* running thread has not used up quantum yet? */ if (rlist.r_preempt > 0) /* decrement remaining quantum */ diff --git a/os/kernel/src/chthreads.c b/os/kernel/src/chthreads.c index 89d1d6329..70b0c3ace 100644 --- a/os/kernel/src/chthreads.c +++ b/os/kernel/src/chthreads.c @@ -293,7 +293,6 @@ void chThdSleepUntil(systime_t time) { chSysUnlock(); } -#if CH_USE_ROUNDROBIN /** * @brief Yields the time slot. * @details Yields the CPU control to the next thread in the ready list with @@ -305,7 +304,6 @@ void chThdYield(void) { chSchDoYieldS(); chSysUnlock(); } -#endif /* CH_USE_ROUNDROBIN */ /** * @brief Terminates the current thread by specifying an exit status code. |