-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cpuidle: Move polling state initialization code to separate file
Move the polling state initialization code to a separate file built conditionally on CONFIG_ARCH_HAS_CPU_RELAX to get rid of the #ifdef in driver.c. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Tested-by: Sudeep Holla <sudeep.holla@arm.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
- Loading branch information
Rafael J. Wysocki
committed
Aug 30, 2017
1 parent
dc2251b
commit 34c2f65
Showing
4 changed files
with
43 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
/* | ||
* poll_state.c - Polling idle state | ||
* | ||
* This file is released under the GPLv2. | ||
*/ | ||
|
||
#include <linux/cpuidle.h> | ||
#include <linux/sched.h> | ||
#include <linux/sched/idle.h> | ||
|
||
static int __cpuidle poll_idle(struct cpuidle_device *dev, | ||
struct cpuidle_driver *drv, int index) | ||
{ | ||
local_irq_enable(); | ||
if (!current_set_polling_and_test()) { | ||
while (!need_resched()) | ||
cpu_relax(); | ||
} | ||
current_clr_polling(); | ||
|
||
return index; | ||
} | ||
|
||
void poll_idle_init(struct cpuidle_driver *drv) | ||
{ | ||
struct cpuidle_state *state = &drv->states[0]; | ||
|
||
snprintf(state->name, CPUIDLE_NAME_LEN, "POLL"); | ||
snprintf(state->desc, CPUIDLE_DESC_LEN, "CPUIDLE CORE POLL IDLE"); | ||
state->exit_latency = 0; | ||
state->target_residency = 0; | ||
state->power_usage = -1; | ||
state->enter = poll_idle; | ||
state->disabled = false; | ||
state->flags = CPUIDLE_FLAG_POLLING; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters