From: Sai Charan Gurrappadi Date: Wed, 25 Jul 2012 15:41:53 +0000 (-0700) Subject: cpuquiet: Add notifiers for the runnables governor X-Git-Tag: firefly_0821_release~4158^2~40 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=14d64ba7d1f7a845f48dc7e175c49a03ffbf3be8;p=firefly-linux-kernel-4.4.55.git 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 --- 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, };