-
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.
- Loading branch information
Paul Mackerras
committed
Feb 26, 2008
1 parent
4b7537f
commit f850bed
Showing
1,005 changed files
with
29,349 additions
and
12,899 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 74b20dad1c4cc0fd13ceca62fbab808919e1a7ea | ||
refs/heads/master: f8303dd3db57bd7ab2062985ad7a9e898a8ac423 |
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
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,23 @@ | ||
|
||
Supporting multiple CPU idle levels in kernel | ||
|
||
cpuidle | ||
|
||
General Information: | ||
|
||
Various CPUs today support multiple idle levels that are differentiated | ||
by varying exit latencies and power consumption during idle. | ||
cpuidle is a generic in-kernel infrastructure that separates | ||
idle policy (governor) from idle mechanism (driver) and provides a | ||
standardized infrastructure to support independent development of | ||
governors and drivers. | ||
|
||
cpuidle resides under drivers/cpuidle. | ||
|
||
Boot options: | ||
"cpuidle_sysfs_switch" | ||
enables current_governor interface in /sys/devices/system/cpu/cpuidle/, | ||
which can be used to switch governors at run time. This boot option | ||
is meant for developer testing only. In normal usage, kernel picks the | ||
best governor based on governor ratings. | ||
SEE ALSO: sysfs.txt in this directory. |
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,31 @@ | ||
|
||
|
||
Supporting multiple CPU idle levels in kernel | ||
|
||
cpuidle drivers | ||
|
||
|
||
|
||
|
||
cpuidle driver hooks into the cpuidle infrastructure and handles the | ||
architecture/platform dependent part of CPU idle states. Driver | ||
provides the platform idle state detection capability and also | ||
has mechanisms in place to support actual entry-exit into CPU idle states. | ||
|
||
cpuidle driver initializes the cpuidle_device structure for each CPU device | ||
and registers with cpuidle using cpuidle_register_device. | ||
|
||
It can also support the dynamic changes (like battery <-> AC), by using | ||
cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, | ||
cpuidle_resume_and_unlock. | ||
|
||
Interfaces: | ||
extern int cpuidle_register_driver(struct cpuidle_driver *drv); | ||
extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); | ||
extern int cpuidle_register_device(struct cpuidle_device *dev); | ||
extern void cpuidle_unregister_device(struct cpuidle_device *dev); | ||
|
||
extern void cpuidle_pause_and_lock(void); | ||
extern void cpuidle_resume_and_unlock(void); | ||
extern int cpuidle_enable_device(struct cpuidle_device *dev); | ||
extern void cpuidle_disable_device(struct cpuidle_device *dev); |
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,29 @@ | ||
|
||
|
||
|
||
Supporting multiple CPU idle levels in kernel | ||
|
||
cpuidle governors | ||
|
||
|
||
|
||
|
||
cpuidle governor is policy routine that decides what idle state to enter at | ||
any given time. cpuidle core uses different callbacks to the governor. | ||
|
||
* enable() to enable governor for a particular device | ||
* disable() to disable governor for a particular device | ||
* select() to select an idle state to enter | ||
* reflect() called after returning from the idle state, which can be used | ||
by the governor for some record keeping. | ||
|
||
More than one governor can be registered at the same time and | ||
users can switch between drivers using /sysfs interface (when enabled). | ||
More than one governor part is supported for developers to easily experiment | ||
with different governors. By default, most optimal governor based on your | ||
kernel configuration and platform will be selected by cpuidle. | ||
|
||
Interfaces: | ||
extern int cpuidle_register_governor(struct cpuidle_governor *gov); | ||
extern void cpuidle_unregister_governor(struct cpuidle_governor *gov); | ||
struct cpuidle_governor |
Oops, something went wrong.