sched: Stop the sched timer when possible to save the power in tickless mode
Remove KEEP_ALIVE_HACK to avoid waking up the device periodly.
The workaround it's added by:
commit 6546fa39c7
Author: Gregory Nutt <gnutt@nuttx.org>
Date: Tue Aug 12 11:12:00 2014 -0600
Tickless Stuff: Back out the risky timer operations when the ready-to-run
list is modified. That is unsafe. An ugly workaround is just to keep an
interval timer going all of the time with a minimum duration equal to the
timeslice interval.
But look like it doesn't needed anymore.
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
17458c7dba
commit
50e2269642
@ -45,31 +45,6 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_SCHED_TICKLESS
|
#ifdef CONFIG_SCHED_TICKLESS
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Pre-processor Definitions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/* In the original design, it was planned that nxsched_reassess_timer() be
|
|
||||||
* called whenever there was a change at the head of the ready-to-run
|
|
||||||
* list. That call was intended to establish a new time-slice or to
|
|
||||||
* stop an old time-slice timer. However, it turns out that that
|
|
||||||
* solution is too fragile: The system is too vulnerable at the time
|
|
||||||
* that the ready-to-run list is modified in order to muck with timers.
|
|
||||||
*
|
|
||||||
* The kludge/work-around is simple to keep the timer running all of the
|
|
||||||
* time with an interval of no more than the timeslice interval. If we
|
|
||||||
* do this, then there is really no need to do anything when on context
|
|
||||||
* switches.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define KEEP_ALIVE_HACK 1
|
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
|
||||||
# define KEEP_ALIVE_TICKS MSEC2TICK(CONFIG_RR_INTERVAL)
|
|
||||||
#else
|
|
||||||
# define KEEP_ALIVE_TICKS MSEC2TICK(80)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Data
|
* Public Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -272,15 +247,6 @@ static uint32_t nxsched_cpu_scheduler(int cpu, uint32_t ticks,
|
|||||||
|
|
||||||
/* Returning zero means that there is no interesting event to be timed */
|
/* Returning zero means that there is no interesting event to be timed */
|
||||||
|
|
||||||
#ifdef KEEP_ALIVE_HACK
|
|
||||||
if (ret == 0)
|
|
||||||
{
|
|
||||||
/* Apply the keep alive hack */
|
|
||||||
|
|
||||||
return KEEP_ALIVE_TICKS;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user