summaryrefslogtreecommitdiff
path: root/drivers/cpuquiet
diff options
context:
space:
mode:
authorSai Charan Gurrappadi <sgurrappadi@nvidia.com>2012-07-25 08:41:53 -0700
committerVarun Colbert <vcolbert@nvidia.com>2012-08-24 19:19:26 -0700
commit679350c95726bc6696e3fdfcdc85c658d88f660c (patch)
tree00523eaf03154de3c8f4f97573e419384d40af73 /drivers/cpuquiet
parenta1c9f879ab8da0c4fc0a9c75791de5ada0a2ffba (diff)
cpuquiet: Add notifiers for the runnables governor
The governor stops sampling whenever the device is busy and starts its sampling loop when the device is free. Change-Id: Ifdae4a84e56c2734be48e49f6112b537602a02da Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/124680 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
Diffstat (limited to 'drivers/cpuquiet')
-rw-r--r--drivers/cpuquiet/governors/runnable_threads.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/cpuquiet/governors/runnable_threads.c b/drivers/cpuquiet/governors/runnable_threads.c
index a44abe9b25f2..44cf308befcf 100644
--- a/drivers/cpuquiet/governors/runnable_threads.c
+++ b/drivers/cpuquiet/governors/runnable_threads.c
@@ -186,6 +186,22 @@ static int runnables_sysfs(void)
return err;
}
+static void runnables_device_busy(void)
+{
+ if (runnables_state != DISABLED) {
+ runnables_state = DISABLED;
+ cancel_delayed_work_sync(&runnables_work);
+ }
+}
+
+static void runnables_device_free(void)
+{
+ if (runnables_state == DISABLED) {
+ runnables_state = IDLE;
+ runnables_work_func(NULL);
+ }
+}
+
static void runnables_stop(void)
{
runnables_state = DISABLED;
@@ -228,6 +244,8 @@ static int runnables_start(void)
struct cpuquiet_governor runnables_governor = {
.name = "runnable",
.start = runnables_start,
+ .device_free_notification = runnables_device_free,
+ .device_busy_notification = runnables_device_busy,
.stop = runnables_stop,
.owner = THIS_MODULE,
};