From 679350c95726bc6696e3fdfcdc85c658d88f660c Mon Sep 17 00:00:00 2001 From: Sai Charan Gurrappadi Date: Wed, 25 Jul 2012 08:41:53 -0700 Subject: 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 Reviewed-on: http://git-master/r/124680 Reviewed-by: Varun Colbert Tested-by: Varun Colbert --- drivers/cpuquiet/governors/runnable_threads.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'drivers/cpuquiet') 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, }; -- cgit v1.2.3